-
算法处理的是数据,不是字符串,也不是布尔值True或者False。
-
不可以删除数据。可以求平均值
-
对于字符串类型以及布尔类型的分类数据。需要转换成0,1,2这样的数字索引。
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
dataset=pd.read_csv('Data2.csv')
X=dataset.iloc[:,:-1].values# 取每一行的前3列
y=dataset.iloc[:,3].values# 取所有行的最后一列
# 用平均数补充缺失值
from sklearn.impute import SimpleImputer
imputer=SimpleImputer(missing_values=np.nan,strategy="mean")
imputer=imputer.fit(X[:,1:3])
X[:,1:3]=imputer.transform(X[:,1:3])```
使用数据如下:
Country Age Salary Purchased
0 France 44.0 72000.0 No
1 Spain 27.0 48000.0 Yes
2 Germany 30.0 54000.0 No
3 Spain 38.0 61000.0 No
4 Germany 40.0 NaN Yes
5 France 35.0 58000.0 Yes
6 Spain NaN 52000.0 No
7 France 48.0 79000.0 Yes
8 Germany 50.0 83000.0 No
9 France 37.0 67000.0 Yes
本来平等的字符串,变成1,2,3之后,好像有先后或者大小顺序了。这不太好,所以要用onehot编码。
#直接编码成数字
from sklearn.preprocessing import LabelEncoder
labelencoder_y=LabelEncoder()
y=labelencoder_y.fit_transform(y)
labelencoder_X=LabelEncoder()
X[:,0]=labelencoder_X.fit_transform(X[:,0])
# 改成onehot编码,只对第一列就可以
#onehot编码
from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer
onehotencoder = ColumnTransformer([('encoder', OneHotEncoder(), [0])], remainder = 'passthrough')
X = onehotencoder.fit_transform(X)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)