亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

pyhton中sklearn機器學習算法的示例分析

發布時間:2021-02-05 10:31:21 來源:億速云 閱讀:185 作者:小新 欄目:編程語言

這篇文章主要介紹pyhton中sklearn機器學習算法的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

導入必要通用模塊

import pandas as pdimport matplotlib.pyplot as pltimport osimport numpy as npimport copyimport reimport math

一 機器學習通用框架:以knn為例

#利用鄰近點方式訓練數據不太適用于高維數據from sklearn.model_selection import train_test_split#將數據分為測試集和訓練集from sklearn.neighbors import KNeighborsClassifier#利用鄰近點方式訓練數據#1.讀取數據data=pd.read_excel('數據/樣本數據.xlsx')#2.將數據標準化from sklearn import preprocessingfor col in data.columns[2:]:#為了不破壞數據集中的離散變量,只將數值種類數高于10的連續變量標準化
       if len(set(data[col]))>10:
              data[col]=preprocessing.scale(data[col])#3.構造自變量和因變量并劃分為訓練集和測試集X=data[['month_income','education_outcome','relationship_outcome', 'entertainment_outcome','traffic_', 'express',
       'express_distance','satisfac', 'wifi_neghbor','wifi_relative', 'wifi_frend', 'internet']]y=data['wifi']X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3)#利用train_test_split進行將訓練集和測試集進行分開,test_size占30%#4.模型擬合model=KNeighborsClassifier()#引入訓練方法model.fit(X_train,y_train)#進行填充測試數據進行訓練y_predict=model.predict(X_test)#利用測試集數據作出預測#通過修改判別概率標準修改預測結果proba=model.predict_proba(X_test)#返回基于各個測試集樣本所預測的結果為0和為1的概率值#5.模型評價#(1)測試集樣本數據擬合優度,model.score(X,y)model.score(X_test,y_test)#(2)構建混淆矩陣,判斷預測精準程度"""
混淆矩陣中行代表真實值,列代表預測值
TN:實際為0預測為0的個數       FP:實際為0預測為1的個數
FN:實際為1預測為0的個數       TP:實際為1預測為1的個數

精準率precision=TP/(TP+FP)——被預測為1的樣本的的預測正確率
召回率recall=TP/(TP+FN)——實際為1的樣本的正確預測率
"""from sklearn.metrics import confusion_matrix
cfm=confusion_matrix(y_test, y_predict)plt.matshow(cfm,cmap=plt.cm.gray)#cmap參數為繪制矩陣的顏色集合,這里使用灰度plt.show()#(3)精準率和召回率from sklearn.metrics import precision_score,recall_score
precision_score(y_test, y_predict)# 精準率recall_score(y_test, y_predict)#召回率#(4)錯誤率矩陣row_sums = np.sum(cfm,axis=1)err_matrix = cfm/row_sums
np.fill_diagonal(err_matrix,0)#對err_matrix矩陣的對角線置0,因為這是預測正確的部分,不關心plt.matshow(err_matrix,cmap=plt.cm.gray)#亮度越高的地方代表錯誤率越高plt.show()

二 數據處理

#1.構造數據集from sklearn import datasets#引入數據集#n_samples為生成樣本的數量,n_features為X中自變量的個數,n_targets為y中因變量的個數,bias表示使線性模型發生偏差的程度,X,y=datasets.make_regression(n_samples=100,n_features=1,n_targets=1,noise=1,bias=0.5,tail_strength=0.1)plt.figure(figsize=(12,12))plt.scatter(X,y)#2.讀取數據data=pd.read_excel('數據/樣本數據.xlsx')#3.將數據標準化——preprocessing.scale(data)from sklearn import preprocessing#為了不破壞數據集中的離散變量,只將數值種類數高于10的連續變量標準化for col in data.columns[2:]:
       if len(set(data[col]))>10:
              data[col]=preprocessing.scale(data[col])

三 回歸

1.普通最小二乘線性回歸

import numpy as npfrom sklearn.linear_model import LinearRegressionfrom sklearn.model_selection import train_test_split

X=data[['work', 'work_time', 'work_salary',
       'work_address', 'worker_number', 'month_income', 'total_area',
       'own_area', 'rend_area', 'out_area',
       'agricultal_income', 'things', 'wifi', 'internet_fee', 'cloth_outcome',
       'education_outcome', 'medcine_outcome', 'person_medicne_outcome',
       'relationship_outcome', 'food_outcome', 'entertainment_outcome',
       'agriculta_outcome', 'other_outcome', 'owe', 'owe_total', 'debt',
       'debt_way', 'distance_debt', 'distance_market', 'traffic_', 'express',
       'express_distance', 'exercise', 'satisfac', 'wifi_neghbor',
       'wifi_relative', 'wifi_frend', 'internet', 'medical_insurance']]y=data['total_income']model=LinearRegression().fit(X,y)#擬合模型model.score(X,y)#擬合優度model.coef_#查看擬合系數model.intercept_#查看擬合截距項model.predict(np.array(X.ix[25,:]).reshape(1,-1))#預測model.get_params()#得到模型的參數

2.邏輯回歸Logit

from sklearn.linear_model import LogisticRegression#2.1數據處理X=data[['month_income', 'education_outcome','relationship_outcome', 'entertainment_outcome','traffic_', 'express',
       'express_distance','satisfac', 'wifi_neghbor','wifi_relative', 'wifi_frend', 'internet']]y=data['wifi']X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3)#利用train_test_split進行將訓練集和測試集進行分開,test_size占30%#2.2模型擬合model = LogisticRegression()model.fit(X_train,y_train)model.score(X_test,y_test)#2.3模型預測y_predict = model.predict(X_test)#2.4通過調整判別分數標準,來調整判別結果decsion_scores = model.decision_function(X_test)#用于決定預測值取值的判別分數y_predict = decsion_scores>=5.0#將判別分數標準調整為5#2.5通過 精準率——召回率曲線圖 尋找最優判別標準#由于隨著判別標準的變化,精確率和召回率此消彼長,因此需要尋找一個最佳的判別標準使得精準率和召回率盡可能大from sklearn.metrics import precision_recall_curve
precisions,recalls,thresholds = precision_recall_curve(y_test,decsion_scores)#thresholds表示所有可能得判別標準,即判別分數最大與最小值之間的范圍#由于precisions和recalls中比thresholds多了一個元素,因此要繪制曲線,先去掉這個元素plt.plot(thresholds,precisions[:-1])plt.plot(thresholds,recalls[:-1])plt.show()y_predict = decsion_scores>=2#根據上圖顯示,兩線交于-0.3處,因此將判別分數標準調整為-0.3#2.6繪制ROC曲線:用于描述TPR和FPR之間的關系,ROC曲線圍成的面積越大,說明模型越好"""TPR即是召回率_越大越好,FPR=(FP)/(TN+FP)_越小越好"""from sklearn.metrics import roc_curve
fprs,tprs,thresholds = roc_curve(y_test,decsion_scores)plt.plot(fprs,tprs)plt.show()#2.7繪制混淆矩陣from sklearn.metrics import confusion_matrix,precision_score,recall_score
cfm =confusion_matrix(y_test, y_predict)# 構建混淆矩陣并繪制混淆矩陣熱力圖plt.matshow(cfm,cmap=plt.cm.gray)#cmap參數為繪制矩陣的顏色集合,這里使用灰度plt.show()precision_score(y_test, y_predict)# 精準率recall_score(y_test, y_predict)#召回率

四 模型評價

#1.混淆矩陣,精準率和召回率from sklearn.metrics import confusion_matrix,precision_score,recall_score"""
混淆矩陣中行代表真實值,列代表預測值
TN:實際為0預測為0的個數       FP:實際為0預測為1的個數
FN:實際為1預測為0的個數       TP:實際為1預測為1的個數

精準率precision=TP/(TP+FP)——被預測為1的樣本的的預測正確率
召回率recall=TP/(TP+FN)——實際為1的樣本的正確預測率
"""cfm =confusion_matrix(y_test, y_predict)# 構建混淆矩陣并繪制混淆矩陣熱力圖plt.matshow(cfm,cmap=plt.cm.gray)#cmap參數為繪制矩陣的顏色集合,這里使用灰度plt.show()precision_score(y_test, y_predict)# 精準率recall_score(y_test, y_predict)#召回率#2.精準率和召回率作圖:由于精準率和召回率此消彼長,應當選擇適當的參數使二者同時盡可能的大#3.調和平均值"""精準率和召回率的調和平均值"""from sklearn.metrics import f1_score
f1_score(y_test,y_predict)#4.錯誤率矩陣row_sums = np.sum(cfm,axis=1)err_matrix = cfm/row_sums
np.fill_diagonal(err_matrix,0)#對err_matrix矩陣的對角線置0,因為這是預測正確的部分,不關心plt.matshow(err_matrix,cmap=plt.cm.gray)#亮度越高的地方代表錯誤率越高plt.show()

以上是“pyhton中sklearn機器學習算法的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

枣强县| 驻马店市| 石柱| 佛山市| 竹北市| 宣化县| 禹州市| 扎鲁特旗| 安图县| 玉山县| 晋江市| 平远县| 云林县| 中江县| 丹棱县| 鸡泽县| 泰宁县| 巢湖市| 海盐县| 贵溪市| 蒙自县| 囊谦县| 克什克腾旗| 塔城市| 绿春县| 万年县| 乌兰浩特市| 金山区| 武鸣县| 茌平县| 佛山市| 镶黄旗| 丹江口市| 永济市| 山丹县| 浦江县| 昌江| 固镇县| 汝城县| 洪江市| 霸州市|