1.model的算法模型
from sklearn.linear_model import LinearRegression
model = LinearRegression() #这里只是用线性回归算法来举例,还有很多其他的算法~ 括号里面可以输入模型的具体参数,具体什么参数不同模型有着不同的参数。
2.model的训练
model.fit(data_X, data_Y) #data_X, data_Y分别代表了训练集的特征和标签。
3.model的得分
model.score(test_X, test_Y) #用测试集的特征还有标签来对测试的结果进行打分。
4.输出模型的系数
model.coef_ #例如样本是线性回归模型,则会返回他的k值。
model.intercept_ #输出模型与Y轴的交点。
5.输出模型定义的参数
model.get_params()
6.输出模型的预测值
model.predict( ## ) # ‘##’里面是需要用来预测的特征值,输出会是他的结果。
model.predict_proba( ## ) # 输出的是计算出来特征对应的每个标签的可能性。
7.用于从数据集中分割训练集和测试集
from sklearn.cross_validation import train_test_split
具体用法
X_train, Y_train, X_test, Y_test = train_test_split(feature, target, test_size = 0.3)
这里的feature就是我们数据集中的特征,target就是标签,test_size表示我们要从数据集中取出多少来作为我们的测试集。
(在其中运用K折交叉验证的方法
交叉验证的原理图
用5次的测试结果平均一下
代码:
from sklearn.model_selection import cross_val_score
knn = KNeighborsClassifier(n_neighbors=5)
scores = cross_val_score(knn,X,y,cv=5,scoring='accurary')
print(scores.mean())#取平均值
在cross_val_score中参数,knn就是要操作的模型,X,y,是特征和标签,cv是定义K等于几,定义后机器会自动帮我们将数据分割,每次分割的train和test都不一样,这也会让我们的scores有五个值在里面。
8.数据的标准化
#下面这种情况就是我们的特征值不平衡的情况
注意:标准化是直接对数据集进行处理的
如:
a = np.array([[10,2.7,3.6],
[-100,5,-2],
[120,20,40],dtype = np.float64
]])
print(a)
print(preprocessing.scale(a))
结果为:
由这里可以看出来数据变得更加集中了。
如果想要让数据压缩到指定的范围,则有
a = preprocessing.minmax_scale(a, feature_range=(-1,1))
这里的feature_range里面的范围就是我们想要数据压缩到的范围
9.对于调整单参数学习曲线的写法
k_range = range(1, 31)
k_scores = []
for k in k_range:
knn = KNeighborsClassifier(n_neighbors=k)
#loss = -cross_val_score(knn, X, y, cv=10, scoring='mean_squared_error')#用于回归
scores = cross_val_score(knn, X, y, cv=10, scoring='accuracy') #用于分类
k_scores.append(scpres_mean())
plt.plot(k_range, k_scores)
plt.xlabel('Value of KNN')
plt.ylable('Cross-Validated Accuracy')
plt.show()
在其中找score最高的点对应的参数值就OK了~
10.网格搜索调整参数(可以用于多个参数的调整)
from sklearn.model_selection import GridSearchCV
然后定义要搜索的参数和他的范围,用字典的形式定义。
param_grid = {'max_depth':np.arange(1, 20, 1)} #这里可以有多个参数与它的范围
rfc = RandomForestClassifier(n_estimators=39
, random_state = 90
)
GS = GridSearchCV(rfc, param_grid, cv=10) #网格搜索与交叉验证结合
GS.fit(data.data, data.target) #用数据的特征和标签来训练,这里因为用了交叉验证,所以他会自动帮我们分训练集和测试集
print(GS.best_params_) #输出最好得分时候的参数的取值
print(GS.best_score_) #输出最好的得分