一、第三方库安装(好坑)
首先吐槽sklearn第三方库安装中注意的问题:
1. 我们使用pip install sklearn 安装好sklearn 后,发现调用库时出现不匹配报错:
(在网上查了很多方法,有版本不匹配,安装an3就OK,等等 。 但是最后调整好是用额外安装别的第三方库才OK的)
2. 我们需要导入 numpy,scipy包,然后安装mkl包,并且更新scikit-learn
3. 随后成功解决问题
二、数据的归一化
数据归一化:将数据都归结到一个范围内
1. 首先我们需要导入python 第三方库包,并随意选取一组数据:
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
2. 然后我们开始创建归一化对象,并实现数据归一化: (这里数据归一化不用使数据变为pd形式也可)
t = pd.DataFrame(data)
scaler = MinMaxScaler()
result = scaler.fit_transform(data)
print(result)
print(scaler.inverse_transform(result))
三、数据标准化( 均值为0 、方差为 1 、正态分布)
1. 首先我们需要导入python 第三方库包,并随意选取一组数据 (和上面一样)
from sklearn.preprocessing import StandardScaler
import pandas as pd
data = [[-1., 1.3], [-0.5, 6], [0, 10], [1, 18]]
2. 然后我们开始创建标准化对象,并实现数据标准化: (这里数据标准化不用使数据变为pd形式也可)
data = pd.DataFrame(data)
scaler = StandardScaler()
scaler = scaler.fit_transform(data)
print(scaler)
四、数据缺失值处理 (均值、中位数、特定值)
1. 首先我们需要导入python 第三方库包,并随意选取一组数据 (和上面一样)
from sklearn.impute import SimpleImputer
import pandas as pd
import numpy as np
data = [[-1., 1.3], [-0.5, 6], [0, 10], [1, 18]]
2. 然后我们开始创建缺失值对象,并实现数据缺失值填充:
data = pd.DataFrame(data)
data.iloc[1:2,1] = np.nan
imp_mean = SimpleImputer()
imp = imp_mean.fit_transform(data)
print(imp)
五、删除数据
1. 首先我们需要导入python 第三方库包,并随意选取一组数据 (和上面一样)
import pandas as pd
import numpy as np
data = [[-1., 1.3], [-0.5, 6], [0, 10], [1, 18]]
2.随后我们转换为pd 数据,然后将数据中的某几项值变为nan (默认的缺失值)
data = pd.DataFrame(data)
data.iloc[1:2,1] = np.nan
3.然后创建dropna 对象处理缺失值
test = data.dropna(axis = 0,inplace = False )
print(test)
六、数据类型转换:(提前处理缺失值)
1. 首先我们需要导入python 第三方库包,并且导入数据:
import numpy as np
import pandas as pd
from sklearn.preprocessing import LabelEncoder
data = pd.read_csv(r'd:\\data_\\data.csv')
2.然后我们进行数据的选取与带入:
y = data.iloc[:,-1]
le = LabelEncoder()
le = le.fit(y)
3. 可以查看当前数据有几种类型,然后进行数据转换:
print(le.classes_)
lable = le.transform(y)
4.将数据赋值给原数据,并进行输出:
data.iloc[:,-1] = lable
print(data.head())
5.当然也可以一步到位:
data.iloc[:, -1] = LabelEncoder().fit_transform(data.iloc[:,-1])
print(data.head())
功能相似:
t = OrdinalEncoder().fit(data_.iloc[:,1:-1]).categories_
data_.iloc[:,1:-1] = OrdinalEncoder().fit_transform(data_.iloc[:,1:-1])
print(data_.head())
七、类型转换为哑变量(必须首先转换为数值型)(具有特征)
1.首先我们导入库,与上述处理完的数据:
import pandas as pd
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder
data = pd.read_csv(r'd:\\data_\\data.csv')
data = data.dropna(axis= 0, inplace=False)
data_1 = data.copy()
data_1.iloc[:, -1] = LabelEncoder().fit_transform(data_1.iloc[:,-1])
2.创建OneHotEncoder类,进行哑变量的转换:
X = data_1.iloc[:,1:-1]
enc = OneHotEncoder(categories='auto').fit(X)
print(enc.get_feature_names())
result = enc.transform(X).toarray()
data_1 = pd.concat([data_1,pd.DataFrame(result)],axis=1)
data_1.drop(["Sex","Embarked"],axis = 1,inplace = True)
data_1.columns = ["Age","Survived","Female","Male","Embarked_C","Embarked_Q","Embarked_S"]
print(result)
八、数据二值化:
1.导入数据包和相关数据:
import pandas as pd
from sklearn.preprocessing import Binarizer
data = pd.read_csv(r'd:\\data_\\data.csv')
2. 数据记性其他操作:
data = data.dropna(axis= 0, inplace=False)
data_1 = data.copy()
data_1.iloc[:,1:-1] = OrdinalEncoder().fit_transform(data_1.iloc[:,1:-1])
data_1.iloc[:, -1] = LabelEncoder().fit_transform(data_1.iloc[:,-1])
3.进行二分值处理:
X = data_1.iloc[:,0].values.reshape(-1,1)
transformer = Binarizer(threshold= 30).fit_transform(X)
data_1.iloc[:,0] = transformer
另一种库:KBinsDiscretizer
( 1 ) encode : 1.onehot 做哑变量 2.ordinal 每个特征都被编码为一个整数
( 2 ) strategy : 1.uniform 表示等宽 2.quantile 等位(数量相同) 3.kmeans 聚类
1. 包和数据的导入:
import pandas as pd
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import KBinsDiscretizer
from sklearn.preprocessing import OrdinalEncoder
data = pd.read_csv(r'd:\\data_\\data.csv')
2. 数据的处理:
data = data.dropna(axis= 0, inplace=False)
data_1 = data.copy()
data_1.iloc[:,1:-1] = OrdinalEncoder().fit_transform(data_1.iloc[:,1:-1])
data_1.iloc[:, -1] = LabelEncoder().fit_transform(data_1.iloc[:,-1])
3. 对象的创建
X = data_1.iloc[:,0].values.reshape(-1,1)
est = KBinsDiscretizer(n_bins=3,encode='ordinal',strategy='uniform')
est = KBinsDiscretizer(n_bins=3,encode='onehot',strategy='uniform')
4.相关数据处理:
print(est.fit_transform(X).toarray())
补充:
1. 对于数据量太大的情形,fit不能直接转换,因此我们使用partial_fit() 对数据进行处理
scaler.partial_fit(data)
scaler = scaler.transform(data)