针对葡萄酒品鉴案例,写一个数据预处理函数,使其具备以下功能: 1)对其 化学特征(第2~14列)进行零均值规范化操作 2)对其 分类特征(第1列)进行独热编码 3)以 Numpy 的 narray (多元数组)形式输出8个处理好的
时间: 2024-10-14 20:09:25 浏览: 46
针对葡萄酒品鉴的数据预处理,我们可以创建一个Python函数,使用pandas库进行数据操作。以下是实现该功能的函数:
```python
import pandas as pd
from sklearn.preprocessing import StandardScaler, OneHotEncoder
def wine_data_preprocessing(data):
# 读取数据
df = pd.DataFrame(data)
# 确保数据是DataFrame格式
if not isinstance(df, pd.DataFrame):
df = pd.DataFrame(df, columns=data.columns)
# 对化学特征进行零均值规范化
scaler = StandardScaler()
chemical_features = df.iloc[:, 1:].values
normalized_chemicals = scaler.fit_transform(chemical_features)
normalized_df = pd.DataFrame(normalized_chemicals, columns=df.columns[1:])
# 对分类特征进行独热编码
categorical_feature = df.iloc[:, 0]
encoder = OneHotEncoder(sparse=False) # 使用不稀疏矩阵
encoded_categories = encoder.fit_transform(categorical_feature.reshape(-1, 1))
encoded_df = pd.DataFrame(encoded_categories, columns=encoder.get_feature_names_out())
# 合并归一化后的化学特性和独热编码后的类别特征
processed_data = pd.concat([normalized_df, encoded_df], axis=1)
# 转换为numpy数组
processed_array = processed_data.values
return processed_array
# 示例使用
data = ... # 你的原始数据
preprocessed_data = wine_data_preprocessing(data)
```
在这个函数中,我们首先检查输入是否为DataFrame,然后对化学特征和分类特征分别应用了标准化和独热编码,并将结果合并成一个新的DataFrame。最后,我们将处理后的DataFrame转换为numpy数组返回。
阅读全文