<<机器学习实战>>27-30节笔记:sklearn使用方法
第六章sklearn使用方法及机器学习调参
- sklearn核心对象类型是评估器estimator,比如线性回归评估器linearregression是包含在skelearn包的linear_model模块下,调用方法
from sklearn.linear_model import LinearRegression
用model=LinearRegression()来进行实例化
然后定义xy,model.fit(x,y)即可训练出一个评估器
model.coef_可以查看系数
model.intercept_ 查看截距
用MSE方法计算方差:
from sklearn.metrics import mean_squared_error
mean_squared_error(model.predict(x),y)
查看超参数
LinearRegression?
具体的超参数:
fit_intecept:是否构建带有截距项的方程,默认为是
normalize:是否正则化处理
copy_x:建模时是否带入训练数据的副本
model.get_params()#获得目前超参数情况
- sklearn自带数据集导入from sklearn.datasets import load_iris
Iris_data.data[:10] 读取数据
3.数据集切分(切分为训练集和测试集):
from sklearn.model_selection import train_test_split
train_test_split(x,y,random_state=42)
4.数据归一化与标准化
标准化:
x=np.arange(9).reshape(3,3)
preprocessing.scale(x)
得到结果:
array([[-1.22474487, -1.22474487, -1.22474487],
[ 0. , 0. , 0. ],
[ 1.22474487, 1.22474487, 1.22474487]])
但这个方法不常用,一般是在训练集上算出均值和标准差,再用到测试集上。使用评估器进行数据标准化,就可以构成机器学习工作流,z-score标准化(将数据缩放到均值为0,方差为1的区间里)具体代码如下:
from sklearn.preprocessing import StandardScaler
# In[44]:
scaler=StandardScaler()
# In[45]:
x_train,x_test=train_test_split(x)
# In[46]:
scaler.fit(x_train)
# In[47]:
scaler.transform(x_train)
# In[48]:
scaler.transform(x_test)
简便写法:
Scaler.fit_transform(x_train)
scaler.transform(x_test)
若是0-1标准化(缩放到0,1间)则为MinMaxScaler
归一化:
将一行数据统一除以一范数(和)或者二范数(平方和开更)的过程,具体操作如下
from sklearn.preprocessing import Normalizer
normalize=Normalizer(norm=’l1’)
normalize.fit_transform(x)
结果为:
array([[0. , 0.33333333, 0.66666667],
[0.25 , 0.33333333, 0.41666667],
[0.28571429, 0.33333333, 0.38095238]])
- 尝试使用逻辑回归评估器
注意:sklearn中逻辑回归评估器默认参数下就支持进行多分类问题判别。并且采用MvM
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
x,y=load_iris(return_X_y=True)
clf_test=LogisticRegression(max_iter=1000)
clf_test.fit(x,y)
#看系数
clf_test.coef_
clf_test.predict(x)[:10]
clf_test.score(x,y)
分数为0.9733333333333334
当然也可以用pipline构建机器学习流
from sklearn.pipeline import make_pipeline
pipe=make_pipeline(StandardScaler(),LogisticRegression(max_iter=1000))
- 模型保存
Import joblib
joblib.dump(pipe,'pipe.model')#存
pipe1=joblib.load('pipe.model')#读
- 正则化
逻辑回归默认加入L2正则化项