import pandas as pdimport matplotlib.pyplot as plt
import numpy as np
#載入資料
def inspect_data(file_root):
dataframe=pd.read_csv(file_root)
print("資料基本資訊:")
print(dataframe.info())
print("資料有%i行,%i列"%(dataframe.shape[0],dataframe.shape[1]))
print("資料預覽:")
print(dataframe.head())
return dataframe
#缺失資料處理
def processing_missing_data(dataframe):
if dataframe.isnull().values.any():
dataframe=dataframe.dropna()
#dataframe=dataframe.fillna(0)
return dataframe
#載入資料
dataframe=pd.read_csv("h:/pythonfigure/voice.csv")
#處理缺失資料
dataframe=processing_missing_data(dataframe)
#資料轉化
dataframe.replace("male",1,inplace=true)
dataframe.replace("female",0,inplace=true)
#資料準備
x=dataframe.ix[:,:-1]
y=dataframe.ix[:,-1]
#特徵歸一化
from sklearn import preprocessing
x=preprocessing.scale(x)
#分割訓練集和測試集
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=1/3.,random_state=5)
#交叉驗證
from sklearn.model_selection import cross_val_score
from sklearn.neighbors import kneighborsclassifier
k_range=range(1,31)
cv_score=
for k in k_range:
knn=kneighborsclassifier(k)
scores=cross_val_score(knn,x_train,y_train,cv=10,scoring="accuracy")
score_mean=scores.mean()
print(k,score_mean)
best_k=np.argmax(cv_score)+1
print("最優的k是%i"%(best_k))
plt.plot(k_range,cv_score)
plt.xlabel("k")
plt.ylabel("score")
plt.show()
#模型訓練
knn_model=kneighborsclassifier(best_k)
knn_model.fit(x_train,y_train)
print("模型準確率:",knn_model.score(x_test,y_test))
5折交叉驗證 模型評估之K折交叉驗證
上節我們說了留出法,這次說下k折交叉驗證,這是我們做模型評估時經常使用的方法。k折交叉驗證的3個要點 1 資料集劃分為k個相同大小的互斥子集。2 通過分層抽樣k個子集保持分布一致性。3 k次評估結果的均值,每次用k 1個集合訓練,剩下的乙個做模型評估。上述例子中共有樣本10個,我們做了5折交叉驗證,...
機器學習之模型選擇(交叉驗證)
問題 交叉驗證 cross validation 1 使用s 來訓練每乙個mi,訓練出引數後,也就可以得到假設函式hi。比如,線性模型 中得到w後,也就得到了假設函式 w 2 選擇錯誤率最小的假設函式。1 從全部的訓練資料s 中隨機選擇70 的樣例作為訓練集strain,剩餘的30 作為測試集 sc...
交叉驗證與網格搜尋(以KNN分類鳶尾花為例)
總結 import pandas as pd pd.set option display.max rows 6 1獲取資料 from sklearn.datasets import load iris iris load iris 新建乙個dataframe,把iris中data方進來,並且data...