UJIndoorLoc数据集预处理代码
时间: 2024-05-04 15:22:14 浏览: 63
以下是 UJIndoorLoc 数据集的预处理代码,主要包括数据读取、数据清洗、特征提取等步骤。
```python
import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder, OneHotEncoder, StandardScaler
def read_data_file(path):
df = pd.read_csv(path)
return df
def clean_data(df):
# 删除无用的列
df.drop(['LONGITUDE', 'LATITUDE', 'FLOOR', 'BUILDINGID'], axis=1, inplace=True)
# 处理类别特征
le = LabelEncoder()
df['SPACEID'] = le.fit_transform(df['SPACEID'])
df['RELATIVEPOSITION'] = le.fit_transform(df['RELATIVEPOSITION'])
df['USERID'] = le.fit_transform(df['USERID'])
# 处理缺失值
df.replace([np.inf, -np.inf], np.nan, inplace=True)
df.fillna(df.mean(), inplace=True)
return df
def get_features(df):
# 提取特征
features = df.iloc[:, :-1].values
labels = df.iloc[:, -1].values
# 对类别特征进行独热编码
one_hot_encoder = OneHotEncoder(categorical_features=[0, 1, 2])
features = one_hot_encoder.fit_transform(features).toarray()
# 对数值特征进行标准化
sc = StandardScaler()
features = sc.fit_transform(features)
return features, labels
if __name__ == '__main__':
# 读取数据文件
df = read_data_file('UJIndoorLoc/trainingData.csv')
# 数据清洗
df = clean_data(df)
# 特征提取
features, labels = get_features(df)
```
该代码首先使用 `read_data_file` 函数读取 UJIndoorLoc 数据集,然后使用 `clean_data` 函数对数据进行清洗,包括删除无用的列、处理类别特征和缺失值。最后使用 `get_features` 函数提取特征,包括对类别特征进行独热编码和对数值特征进行标准化。
阅读全文