scikit learning 交叉驗證

2021-07-24 11:42:29 字數 3206 閱讀 1069

import numpy as np

from sklearn import datasets

from sklearn.cross_validation import train_test_split

from sklearn.neighbors import kneighborsclassifier

iris = datasets.load_iris()

iris_x =iris.data

iris_y = iris.target

#print (iris_x[:5,:])

#print (iris_y)

x_train,x_test,y_train,y_test=train_test_split(iris_x,iris_y,random_state=4)

#print(y_train)

knn=kneighborsclassifier(n_neighbors=3)

knn.fit(x_train,y_train)

#y_pre=knn.predict(x_test)

print (knn.score(x_test,y_test))

沒有進行交叉驗證結果為:0.973684210526

"""

created on wed nov 9 15:47:35 2016

功能:交叉驗證(cross validation)

分類器:k鄰近

資料:鶯尾花

@author: haoming

"""import numpy as np

from sklearn import datasets

from sklearn.cross_validation import train_test_split

from sklearn.neighbors import kneighborsclassifier

iris = datasets.load_iris()

iris_x =iris.data

iris_y = iris.target

from sklearn.cross_validation import cross_val_score

knn=kneighborsclassifier(n_neighbors=5)

scores=cross_val_score(knn,iris_x,iris_y,cv=5,scoring='accuracy')

'''交叉驗證將測試資料分為五組 cv = 5,最後輸出平均值mean()

'''print (scores)

print (scores.mean())

輸出結果:

[ 0.96666667  1.          0.93333333  0.96666667  1.        ]

0.973333333333

以下是一段選擇k鄰近演算法引數k的方法

from sklearn import datasets

from sklearn.neighbors import kneighborsclassifier

from sklearn.cross_validation import cross_val_score

import matplotlib.pyplot as plt

iris = datasets.load_iris()

iris_x =iris.data

iris_y = iris.target

k_range=range(1,31)

k_score=

for k in k_range:

knn = kneighborsclassifier(n_neighbors=k)

scores = cross_val_score(knn,iris_x,iris_y,cv=10,scoring='accuracy')

# loss = cross_val_score(knn,iris_x,iris_y,cv=10,scoring='mean_squared_error')

plt.plot(k_range,k_score)

plt.xlabel('value of k for knn')

plt.ylabel('cross validation accuracy')

plt.show()

結果:

從圖中我們可以看出,選擇怎麼乙個k正確率比較高

這個是乙個knn回歸演算法的選擇引數**

from sklearn import datasets

from sklearn.neighbors import kneighborsclassifier

from sklearn.cross_validation import cross_val_score

import matplotlib.pyplot as plt

iris = datasets.load_iris()

iris_x =iris.data

iris_y = iris.target

k_range=range(1,31)

k_score=

for k in k_range:

knn = kneighborsclassifier(n_neighbors=k)

# scores = cross_val_score(knn,iris_x,iris_y,cv=10,scoring='accuracy')

loss = -cross_val_score(knn,iris_x,iris_y,cv=10,scoring='mean_squared_error')

'''判斷回歸的誤差(mean_squared_error)

'''

plt.plot(k_range,k_score)

plt.xlabel('value of k for knn')

plt.ylabel('cross validation accuracy')

plt.show()

執行結果:

scikit learning 線性回歸學習

多項式回歸損失函式為均方誤差,迭代計算方式為梯度下降 在scikit learning中,多項式回歸由sklearn.linear model.linearregression。當特徵不足導致欠擬合時,可以採用特徵組合的方式產生多項式特徵,在scikit learning中,用sklearn.pre...

矩形面積交

時間限制 1.0s 記憶體限制 512.0mb 問題描述 平面上有兩個矩形,它們的邊平行於直角座標系的x軸或y軸。對於每個矩形,我們給出它的一對相對頂點的座標,請你程式設計算出兩個矩形的交的面積。輸入格式 輸入僅包含兩行,每行描述乙個矩形。在每行中,給出矩形的一對相對頂點的座標,每個點的座標都用兩個...

矩形面積交

問題描述 平面上有兩個矩形,它們的邊平行於直角座標系的x軸或y軸。對於每個矩形,我們給出它的一對相對頂點的座標,請你程式設計算出兩個矩形的交的面積。輸入格式 輸入僅包含兩行,每行描述乙個矩形。在每行中,給出矩形的一對相對頂點的座標,每個點的座標都用兩個絕對值不超過10 7的實數表示。輸出格式 輸出僅...