簡介Python的sklearn機器學習演算法
免費學習推薦:python影片教學
匯入必要通用模組
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()
大量免費學習推薦,請造訪python教學(影片)
以上是簡介Python的sklearn機器學習演算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

MySQL 有免費的社區版和收費的企業版。社區版可免費使用和修改,但支持有限,適合穩定性要求不高、技術能力強的應用。企業版提供全面商業支持,適合需要穩定可靠、高性能數據庫且願意為支持買單的應用。選擇版本時考慮的因素包括應用關鍵性、預算和技術技能。沒有完美的選項,只有最合適的方案,需根據具體情況謹慎選擇。

文章介紹了MySQL數據庫的上手操作。首先,需安裝MySQL客戶端,如MySQLWorkbench或命令行客戶端。 1.使用mysql-uroot-p命令連接服務器,並使用root賬戶密碼登錄;2.使用CREATEDATABASE創建數據庫,USE選擇數據庫;3.使用CREATETABLE創建表,定義字段及數據類型;4.使用INSERTINTO插入數據,SELECT查詢數據,UPDATE更新數據,DELETE刪除數據。熟練掌握這些步驟,並學習處理常見問題和優化數據庫性能,才能高效使用MySQL。

MySQL數據庫性能優化指南在資源密集型應用中,MySQL數據庫扮演著至關重要的角色,負責管理海量事務。然而,隨著應用規模的擴大,數據庫性能瓶頸往往成為製約因素。本文將探討一系列行之有效的MySQL性能優化策略,確保您的應用在高負載下依然保持高效響應。我們將結合實際案例,深入講解索引、查詢優化、數據庫設計以及緩存等關鍵技術。 1.數據庫架構設計優化合理的數據庫架構是MySQL性能優化的基石。以下是一些核心原則:選擇合適的數據類型選擇最小的、符合需求的數據類型,既能節省存儲空間,又能提升數據處理速度

HadiDB:輕量級、高水平可擴展的Python數據庫HadiDB(hadidb)是一個用Python編寫的輕量級數據庫,具備高度水平的可擴展性。安裝HadiDB使用pip安裝:pipinstallhadidb用戶管理創建用戶:createuser()方法創建一個新用戶。 authentication()方法驗證用戶身份。 fromhadidb.operationimportuseruser_obj=user("admin","admin")user_obj.

直接通過 Navicat 查看 MongoDB 密碼是不可能的,因為它以哈希值形式存儲。取回丟失密碼的方法:1. 重置密碼;2. 檢查配置文件(可能包含哈希值);3. 檢查代碼(可能硬編碼密碼)。

MySQL 可在無需網絡連接的情況下運行,進行基本的數據存儲和管理。但是,對於與其他系統交互、遠程訪問或使用高級功能(如復制和集群)的情況,則需要網絡連接。此外,安全措施(如防火牆)、性能優化(選擇合適的網絡連接)和數據備份對於連接到互聯網的 MySQL 數據庫至關重要。

MySQL Workbench 可以連接 MariaDB,前提是配置正確。首先選擇 "MariaDB" 作為連接器類型。在連接配置中,正確設置 HOST、PORT、USER、PASSWORD 和 DATABASE。測試連接時,檢查 MariaDB 服務是否啟動,用戶名和密碼是否正確,端口號是否正確,防火牆是否允許連接,以及數據庫是否存在。高級用法中,使用連接池技術優化性能。常見錯誤包括權限不足、網絡連接問題等,調試錯誤時仔細分析錯誤信息和使用調試工具。優化網絡配置可以提升性能

對於生產環境,通常需要一台服務器來運行 MySQL,原因包括性能、可靠性、安全性和可擴展性。服務器通常擁有更強大的硬件、冗餘配置和更嚴格的安全措施。對於小型、低負載應用,可在本地機器運行 MySQL,但需謹慎考慮資源消耗、安全風險和維護成本。如需更高的可靠性和安全性,應將 MySQL 部署到雲服務器或其他服務器上。選擇合適的服務器配置需要根據應用負載和數據量進行評估。
