1??了解什么是機器學習 2??了解機器學習sklearn庫的簡介、安裝 3??掌握使用sklearn轉(zhuǎn)換器處理數(shù)據(jù)的方法 4??構(gòu)建并評價線性回歸模型 |
認識機器學習??
1.1機器學習??
機器學習是人工智能 (AI) 和計算機科學的分支,專注于使用數(shù)據(jù)和算法來模仿人類學習的方式,逐漸提高其準確性。
機器學習是一門多學科交叉專業(yè),涵蓋概率論知識,統(tǒng)計學知識,近似理論知識和復雜算法知識,使用計算機作為工具并致力于真實實時的模擬人類學習方式,,并將現(xiàn)有內(nèi)容進行知識結(jié)構(gòu)劃分來有效提高學習效率。??
機器學習是人工智能及模式識別領(lǐng)域的共同研究熱點,其理論和方法已被廣泛應(yīng)用與解決工程應(yīng)用和科學領(lǐng)域的復雜問題。搜索引擎、五人駕駛、機器翻譯、醫(yī)療診斷、垃圾郵件過濾、玩游戲、人臉識別、數(shù)據(jù)匹配、信用評級和給圖片加濾鏡等任務(wù)都用到了機器學習。??
機器學習屬于人工智能的一部分,可以分為監(jiān)督學習與非監(jiān)督學習倆種。??
監(jiān)督學習:給定的數(shù)據(jù)集有已知的標簽可以進行學習,一般有分類和回歸問題;
非監(jiān)督學習:給定等等數(shù)據(jù)集沒有可以進來學習的 標簽,一般有聚類和強化學習。
機器學習就是從數(shù)據(jù)上建立模型的學習算法,有了算法之后,將經(jīng)驗(數(shù)據(jù))提供給算法,算法就能夠基于經(jīng)驗(數(shù)據(jù))產(chǎn)生模型(學習結(jié)果);當提供經(jīng)驗之外的數(shù)據(jù)時,模型就能夠依據(jù)經(jīng)驗提供相應(yīng)的判斷。計算機從數(shù)據(jù)種學習出規(guī)律和模式,以應(yīng)用在新數(shù)據(jù)上做預測的任務(wù)。機器學習研究的是計算機怎么模擬人類的學習行為,以獲取新的知識或技能,并重新組織已有的知識結(jié)構(gòu)使之不斷改善自身。??

機器學習模型圖
機器學習流程:數(shù)據(jù)預處理—模型訓練(模型調(diào)參)—模型評估—新樣本預測,機器學習的應(yīng)用工作是圍繞著數(shù)據(jù)與算法展開的,數(shù)據(jù)的質(zhì)和量對算法有很大影響。??

人類學習模型圖
數(shù)據(jù)預處理很重要且繁瑣,60%-70%的時間會放在數(shù)據(jù)預處理上,20%-30%的時間放在模型學習和模型評估上。數(shù)據(jù)好壞決定了模型效果的上限,而使用不同算法的目的知識去逼近這個上限。??
1.2機器學習 vs深度學習 vs神經(jīng)網(wǎng)絡(luò)??
機器學習、深度學習和神經(jīng)網(wǎng)絡(luò)都是人工智能的子領(lǐng)域。 但是,深度學習實際上是機器學習的一個子領(lǐng)域,而神經(jīng)網(wǎng)絡(luò)則是深度學習的一個子領(lǐng)域。??
深度學習和機器學習的不同之處在于每個算法如何學習。 深度學習可以自動執(zhí)行過程中的大部分特征提取,消除某些必需的人工干預,并能夠使用更大的數(shù)據(jù)集。 可將深度學習視為“可擴展的機器學習”,就如 Lex Fridman 在這個 MIT 講座 (00:30) 中 (鏈接位于 IBM 外部)所述的那樣。 常規(guī)的機器學習,或叫做“非深度”機器學習,更依賴于人工干預進行學習。 人類專家確定一組特征,以了解數(shù)據(jù)輸入之間的差異,通常需要更為結(jié)構(gòu)化的數(shù)據(jù)以進行學習。??
“深度”機器學習則可以利用標簽化的數(shù)據(jù)集,也稱為監(jiān)督式學習,以確定算法,但不一定必須使用標簽化的數(shù)據(jù)集。 它可以原始格式(例如文本、圖像)采集非結(jié)構(gòu)化數(shù)據(jù),并且可以自動確定區(qū)分不同類別數(shù)據(jù)的特征集。 與機器學習不同,它不需要人工干預數(shù)據(jù)的處理,使我們能夠以更有趣的方式擴展機器學習。 深度學習和神經(jīng)網(wǎng)絡(luò)目前的成就,主要歸功于計算機視覺、自然語言處理和語音識別等領(lǐng)域的突飛猛進。??
神經(jīng)網(wǎng)絡(luò)也稱為人工神經(jīng)網(wǎng)絡(luò) (ANN),由節(jié)點層組成,包含一個輸入層、一個或多個隱藏層和一個輸出層。 每個節(jié)點也稱為一個人工神經(jīng)元,它們連接到另一個節(jié)點,具有相關(guān)的權(quán)重和閾值。 如果任何單個節(jié)點的輸出高于指定的閾值,那么該節(jié)點將被激活,并將數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)的下一層。 否則,不會將數(shù)據(jù)傳遞到網(wǎng)絡(luò)的下一層。 深度學習中的“深度”指的只是神經(jīng)網(wǎng)絡(luò)中層的深度。 由三層以上組成的神經(jīng)網(wǎng)絡(luò)(包含輸入和輸出)可視為深度學習算法或深度神經(jīng)網(wǎng)絡(luò)。 只有兩層或三層的神經(jīng)網(wǎng)絡(luò)只是基本神經(jīng)網(wǎng)絡(luò)。??
1.3現(xiàn)實機器學習用例??
語音識別:也稱為自動語音識別 (ASR)、計算機語音識別或語音到文本,能夠使用自然語言處理 (NLP),將人類語音處理為書面格式。 許多移動設(shè)備將語音識別結(jié)合到系統(tǒng)中以進行語音搜索,例如: Siri,或提供有關(guān)文本的更多輔助功能。??
客戶服務(wù):在線聊天機器人正逐步取代客戶互動中的人工客服。 他們回答各種主題的常見問題 (FAQ) ,例如送貨,或為用戶提供個性化建議,交叉銷售產(chǎn)品,提供用戶尺寸建議,改變了我們對網(wǎng)站和社交媒體中客戶互動的看法。 示例包括具有虛擬客服的電子商務(wù)站點上的聊天機器人、消息傳遞應(yīng)用(例如 Slack 和 Facebook Messenger)以及虛擬助理和語音助手通常執(zhí)行的任務(wù)。??
計算機視覺:該 AI 技術(shù)使計算機和系統(tǒng)能夠從數(shù)字圖像、視頻和其他可視輸入中獲取有意義的信息,并基于這些輸入采取行動。 這種提供建議的能力將其與圖像識別任務(wù)區(qū)分開來。 計算機視覺由卷積神經(jīng)網(wǎng)絡(luò)提供支持,應(yīng)用在社交媒體的照片標記、醫(yī)療保健中的放射成像以及汽車工業(yè)中的自動駕駛汽車等領(lǐng)域。??
推薦引擎:AI 算法使用過去的消費行為數(shù)據(jù),幫助發(fā)現(xiàn)可用于制定更有效的交叉銷售策略的數(shù)據(jù)趨勢。 這用于在在線零售商的結(jié)帳流程中向客戶提供相關(guān)的附加建議。??
自動股票交易:旨在用于優(yōu)化股票投資組合,AI 驅(qū)動的高頻交易平臺每天可產(chǎn)生成千上萬個甚至數(shù)以百萬計的交易,無需人工干預。??
sklearn庫的簡介、安裝??
2.1 sklearn庫的簡介??
sklearn是scikit-learn的簡稱,是一個基于Python的第三方模塊。sklearn對常用的機器學習算法進行了封裝,其中包括:
分類(Classification)
回歸(regression)
聚類(clustering)
數(shù)據(jù)降維(dimensionality reduction)
常用模型(modelselection)
數(shù)據(jù)預處理(preprocessing)
在進行機器學習任務(wù)時,并不需要實現(xiàn)算法,只需要簡單的調(diào)用sklearn庫中提供的模塊就能完成大多數(shù)的機器學習任務(wù)。??
sklearn庫是在Numpy,Scipy和matplotlib的基礎(chǔ)上開發(fā)而成的,因此在介紹sklearn的安裝前,需要先安裝這些依賴庫。??
NumPy(Numerical Python的縮寫)是一個開源的Python科學計算庫。在Python中雖然提供了list容器和array模塊,但這些結(jié)構(gòu)并不適合于進行數(shù)值計算,因此需要借助于NumPy庫創(chuàng)建常用的數(shù)據(jù)結(jié)構(gòu)(如多維數(shù)組,矩陣等)以及進行常用的科學計算(如矩陣計算)。??
SciPy庫是sklearn庫的基礎(chǔ),它是基于Numpy的一個集成了多種數(shù)學算法和函數(shù)的Python模塊。它的不同子模塊有不同的應(yīng)用,如積分、插值、優(yōu)化和信號處理等。??
Matplotlib是基于Numpy的一套Python工具包,它提供了大量的數(shù)據(jù)繪圖工具,主要用于繪制一些統(tǒng)計圖形,將大量的數(shù)據(jù)轉(zhuǎn)換成更加容易唄接受的圖表。(注意:要先安裝Numpy再安裝matplotlib庫)??
Scikit-learn 要求:
Python (>= 3.5),
NumPy (>= 1.11.0),
SciPy (>= 0.17.0),
joblib (>= 0.11).
2.2sklearn庫的安裝??
sklearn安裝包的下載:安裝 scikit-learn — scikit-learn 1.2.1 文檔
sklearn安裝順序如下:
Numpy庫
SciPy庫
matplotlib庫
sklearn庫
關(guān)于依賴庫Numpy的安裝,首先找對應(yīng)自己的python版本和Windows位數(shù)的文件

例如:Python3.7版本,win64位則執(zhí)行下面命令:
pip install Numpy-1.15.4+mkl-cp37-amd37m-win_amd64.ahl
關(guān)于依賴庫scipy的安裝,用命令:
pip install scipy-1.2.1-cp37-cp37m-win_amd64.ahl
關(guān)于依賴庫matplotlib的安裝,用命令:
pip install matplotlib-2.2.4-cp37-cp37m-win_amd64.ahl
關(guān)于依賴庫sklearn的安裝,用命令:
pip install scikit_learn-0.18.1-cp35-cp35m-win_amd64.ahl
如果你已經(jīng)有一個合適的 numpy 和 scipy版本,安裝 scikit-learn 最簡單的方法是使用 pip。??
pip install -U scikit-learn
或者 conda:
conda install scikit-learn
例子(使用conda安裝):
首先打開anaconda Prompt的控制臺輸入conda。??

按上面的輸入 conda install sklearn??

下載好后就是這樣??

sklearn轉(zhuǎn)換器處理數(shù)據(jù)的方法??
sklearn是一個機器學習的python庫,里面包含很多經(jīng)典算法,可以很方便地選擇對應(yīng)的算法對數(shù)據(jù)進行訓練,很方便的得出各種訓練的參數(shù),并使用模型對分類進行預測。??
機器學習算法往往需要大量的數(shù)據(jù),在sklearn中獲取數(shù)據(jù)通常采用兩種方式,以中國是使用自帶的數(shù)據(jù)集,另一種是創(chuàng)建數(shù)據(jù)集。??
3.1導入數(shù)據(jù)集??
sklearn自帶了很多數(shù)據(jù)集,可以用來對算法進行測試分析,免去了自己再去找數(shù)據(jù)集的煩惱,其中包括鳶尾花數(shù)據(jù)集:load_iris();手寫數(shù)字數(shù)據(jù)集:load_digitals();糖尿病數(shù)據(jù)集:load_diabetes();乳腺癌數(shù)據(jù)集:load_breast_cancer();波士頓數(shù)據(jù)集:load_boston();體能數(shù)據(jù)集:load_linnerud()。??
以波士頓數(shù)據(jù)集為例導入數(shù)據(jù)集:
該數(shù)據(jù)集包含美國人口普查局收集的美國馬薩諸塞州波士頓住房價格的有關(guān)信息, 數(shù)據(jù)集很小,只有506個案例。
數(shù)據(jù)集都有以下14個屬性:
CRIM--城鎮(zhèn)人均犯罪率 ------【城鎮(zhèn)人均犯罪率】
ZN - 占地面積超過25,000平方英尺的住宅用地比例。 ------【住宅用地所占比例】
INDUS - 每個城鎮(zhèn)非零售業(yè)務(wù)的比例。 ------【城鎮(zhèn)中非商業(yè)用地占比例】
CHAS - Charles River虛擬變量(如果是河道,則為1;否則為0 ------【查爾斯河虛擬變量,用于回歸分析】
NOX - 一氧化氮濃度(每千萬份) ------【環(huán)保指標】
RM - 每間住宅的平均房間數(shù) ------【每棟住宅房間數(shù)】
AGE - 1940年以前建造的自住單位比例 ------【1940年以前建造的自住單位比例 】
DIS -波士頓的五個就業(yè)中心加權(quán)距離 ------【與波士頓的五個就業(yè)中心加權(quán)距離】
RAD - 徑向高速公路的可達性指數(shù) ------【距離高速公路的便利指數(shù)】
TAX - 每10,000美元的全額物業(yè)稅率 ------【每一萬美元的不動產(chǎn)稅率】
PTRATIO - 城鎮(zhèn)的學生與教師比例 ------【城鎮(zhèn)中教師學生比例】
B - 1000(Bk - 0.63)^ 2其中Bk是城鎮(zhèn)黑人的比例 ------【城鎮(zhèn)中黑人比例】
LSTAT - 人口狀況下降% ------【房東屬于低等收入階層比例】
MEDV - 自有住房的中位數(shù)報價, 單位1000美元 ------【自住房屋房價中位數(shù)】
導入數(shù)據(jù):
#導入sklearn的數(shù)據(jù)庫
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
from sklearn. metrics import mean_squared_error
import pandas as pd
import numpy as np
使用sklearn的樣本生成器(samples generator)可以創(chuàng)建數(shù)據(jù)
def linear_model1():
"""
線性回歸:正規(guī)方程
"""
#1.獲取數(shù)據(jù)
data = load_boston()
#2.數(shù)據(jù)集劃分
x_train,x_test,y_train,y_test=train_test_split(data.data,data.target,random_state=22)
#3.特征工程-標準化
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.fit_transform(x_test)
#4.機器學習-線性回歸(正規(guī)方程)
estimator = LinearRegression()
estimator.fit(x_train,y_train)
#5.模型評估
#5.1 獲取系數(shù)等值
y_predict = estimator.predict(x_test)
print("預測值為:\n",y_predict)
print("模型中的系數(shù)為:\n",estimator.coef_)
print("模型中的偏置為:\n",estimator.intercpt_)
#5.2評價
#均方誤差
error = mean_squared_error(y_test,ypredict)
print("誤差為:\n",error)
return None
linear_model1()
輸出結(jié)果:

3.2數(shù)據(jù)預處理??
我們?yōu)槭裁匆M行數(shù)據(jù)預處理?通常,真實生活中,我們獲得的數(shù)據(jù)中往往存在很多的無用信息,甚至存在錯誤信息,而機器學習中有一句話叫做“Garbage in,Garbage out”,數(shù)據(jù)的健康程度對于算法結(jié)果的影響極大。數(shù)據(jù)預處理就是讓那些冗余混亂的源數(shù)據(jù)變得能滿足其應(yīng)用要求。在這里只談及幾個基礎(chǔ)的數(shù)據(jù)預處理的方法。sklearn提供了一個數(shù)據(jù)預處理的package:preprocessing,直接導入即可。??
import sklearn.preprocessing as sk_preprocessing
下面將[[1,-1,2],[0,2,-1],[0,1,-2]]作為初始數(shù)據(jù)。
基于mean和std的標準化:
scaler = sk_preprocessing.StandardScaler().fit(X)
new_X = scaler.transform(X)
print("基于mean和std的標準化:",new_X)
輸出結(jié)果:

規(guī)范化到一定區(qū)間內(nèi)feature_range為數(shù)據(jù)規(guī)范化的范圍.
scaler = sk_preprocessing.MinMaxScaler(feature_range = (0,1)).fit(X)
new_X = scaler.transform(X)
print("規(guī)范化到一定區(qū)間內(nèi)",new_X)
輸出結(jié)果:

然后我們把數(shù)據(jù)正則化
首先求出樣本的p-范數(shù),然后該樣本的所有元素都要除以該范數(shù),這樣最終使得每個樣本的范數(shù)都為1.
當我們正在使用sklearn中的normalize()函數(shù)。如果您一直使用12作為范數(shù)值范數(shù)
normed_X =normalize(X, axis=0, norm='12')
根據(jù)文檔,參數(shù)范數(shù)的支持規(guī)范是'l1‘、’l2‘或'max’
所以要將12參數(shù)值替換為l2,如下所示:
normed_X =normalize(X, axis=0, norm='l2')
這是很多人都會犯的錯誤。
new_X = sk_preprocessing.normalize(X,norm = "l2")
print("求二范數(shù)",new_X)
打印結(jié)果:

4.構(gòu)建并評價線性回歸模型??
4.1回歸模型??
回歸模型(regression model)對統(tǒng)計關(guān)系進行定量描述的一種數(shù)學模型,是一種預測性的建模技術(shù),它研究的是因變量(目標)和自變量(預測器)之間的關(guān)系。這種技術(shù)通常用于預測分析,時間序列模型以及發(fā)現(xiàn)變量之間的因果關(guān)系。例如司機的魯莽駕駛與道路交通事故數(shù)量之間的關(guān)系,最好的研究方法就是回歸。他可以根據(jù)歷史數(shù)據(jù)的變化規(guī)律,尋找自變量與因變量之間的回歸方程式,確定模型參數(shù),據(jù)此預測。??
特點:技術(shù)比較成熟,預測過程簡單;將預測對象的影響因素分解,考察各因素的變化情況,從而估計預測對象未來的數(shù)量狀態(tài);回歸模型誤差較大,外推特性差。
適用范圍:回歸分析法一般適用于中期預測?;貧w分析法要求樣本量大且要求樣本有較好的分布規(guī)律,當預測的長度大于占有的原始數(shù)據(jù)長度時,采用該方法進行預測在理論上不能保證預測結(jié)果的精度。另外,可能出現(xiàn)量化結(jié)果與定性分析結(jié)果不符的現(xiàn)象,有時難以找到合適的回歸方程類型。??
我們常見的回歸分析中,線性回歸和 logistic回歸最為常見。也是當前研究最多,并且使用最為晉遍,以及最為人接受容易理解的研究方法。??文章來源:http://www.zghlxwxcb.cn/news/detail-745614.html
尤其是線性回歸,其使用最為成熟,研究最多,而且絕大多數(shù)生活現(xiàn)象均可使用線性回歸進行研究,因而結(jié)合回歸分析還會多出一些回歸方法;同時回歸分析模型會有很多假定,或者滿足條件,如果不滿足這些假定或者條件就會導致模型使用出錯,此時就有對應(yīng)的其他回歸模型出來解決這些問題,因而跟著線性回歸后面又出來很多的回歸。??文章來源地址http://www.zghlxwxcb.cn/news/detail-745614.html
pip install -i https://pypi.tuna.tsinghus.edu.cn/simple/ sklearn
import sklearn
print('hi')
from sklearn.linear_model import LinearRegression
x =[[80,86],
[82,80],
[85,78],
[90,90],
[86,82],
[82,90],
[78,80],
[92,94]]
y=[84.2,80.6,80.1,90,83.2,87.6,79.4,93.4]
x
y
estimator=LinearRegression()
estimator.fit(x,y)
estimator.coef_
estimator.predict([[100,80]])

到了這里,關(guān)于Anaconda?利用機器學習sklearn構(gòu)建模型與實現(xiàn)丨第一課的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!