SciKit-learn快速入门教程和实例(二)

知乎专栏:https://zhuanlan.zhihu.com/p/33148436

一,sklearn的常用属性和功能

继续上次对波士顿房价预测的讨论,了解模型的属性和功能。

#首先导入库,使用的是线性回归
from sklearn import datasets
from sklearn.linear_model import LinearRegression

#导入波士顿房价数据集
loaded_data = datasets.load_boston()
#data_X是训练数据
data_X = loaded_data.data
#data_y是导入的标签数据
data_y = loaded_data.target

#建立模型,线性回归模型
model = LinearRegression()

#进行数据拟合,通过训练得到模型参数
model.fit(data_X,data_y)
#使用训练过的模型对数据进行预测,预测是前四行的数据
print(mode.predict(data_X[:4,:]))

#输出模型的两个参数,在这里分别指的是,线性回归模型的斜率和截距
print(model.coef_)
print(model.intercept_)

#取出之前定义的模型的参数
print(model.get_params())
#使用均方误差对其进行打分,输出精确度,
#即利用训练好的模型对data_X进行预测,得到预测后,和原本标签进行比较
print(model.score(data_X,data_y))

输出结果
SciKit-learn快速入门教程和实例(二)

二,正规化 Normalization

数据的尺度会有所不同,这会影响机器学习的速度,可以使用正规化,将数据变成范围大致相同的区域。首先说下何为数据标准化。

1.数据标准化

#加载标准化数据的模块
from sklearn import prepocessing
import numpy as np
#建立一个数组,可以看大数据大小比较大
a = np.array([
        [10,2.7,3.6],
        [-100,5,-2],
        [120,20,40],dtype=np.float64
])
#输出标准化后的结果
print(prepossing.scale(a))

结果是:

[[ 0.         -0.85170713 -0.55138018]
[-1.22474487 -0.55187146 -0.852133  ]
[ 1.22474487  1.40357859  1.40351318]]

经过标准化后,数据范围变得大致相同,可以提高我们训练的速度。

2.比较标准化对ML训练的影响

#加载模块
from sklearn import prepocessing
import numpy as np
#加载模块,对数据进行分类
from sklearn.model_ selection import train_test_split
#加载模块,用于产生易分类的数据
from sklearn.datasets.smples_generator import make_classification
#导入SVM模块
from sklearn.svm imoprt SVC
#导入画图模块
import matplotlib.pyplot as plt

#产生一个分类数据集
X, y = make_classification(
        n_samples=300, n_features=2,
        n_reducndant=0, n_informative=2,
        random_state=22, n_clusters_per_class=1
        scale=100
    )
#将产生的数据,在图中画出来
plt.plot.scatter(X[:,0],X[:, 1], c=y)
plt.show()

SciKit-learn快速入门教程和实例(二)

未标准化的数据

X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3)
#建立一个模块
clf = SVC()
#训练数据
clf.fit(X_train,y_train)
#利用训练好的模型,比对数据
print(clf.score(X_test, y_test))

对数据标准化后再训练

#首先对数据进行标准化,其他和上面一样
X = preprocessing.scale(X)
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3)
clf = SVC()
clf.fit(X_train,y_train)
print(clf.score(X_test,y_test)

以上众多内容,参照莫烦教程
更详细的内容可以去他官网查看。 https://morvanzhou.github.io/