摘要:機(jī)器學(xué)習(xí)本質(zhì)包含了數(shù)學(xué)原理推導(dǎo)與實(shí)際應(yīng)用技巧推論事情的方法演繹法和歸納法。同樣或者類似的數(shù)據(jù)放在一起,透過(guò)放在一起的數(shù)據(jù),分析學(xué)習(xí),找到需要知道的答案,稱之為非監(jiān)督式學(xué)習(xí)。
機(jī)器學(xué)習(xí)本質(zhì)包含了數(shù)學(xué)原理推導(dǎo)與實(shí)際應(yīng)用技巧
推論事情的方法:演繹法和歸納法。
根據(jù)經(jīng)驗(yàn)進(jìn)行推論,就像人成長(zhǎng)一樣。
基礎(chǔ):
機(jī)器學(xué)習(xí)的目的是:歸納(Induction), 從詳細(xì)事實(shí)到一般推論
找出有效的預(yù)測(cè)模型
一開始都是從一個(gè)簡(jiǎn)單的模型開始
藉由不斷喂入訓(xùn)練數(shù)據(jù),修改模型
不斷提升預(yù)測(cè)績(jī)效
機(jī)器學(xué)習(xí)的步驟:
使用者的行為
收集資料
數(shù)據(jù)轉(zhuǎn)換與清洗
建立模型
驗(yàn)證模型 (建立模型 和 驗(yàn)證模型 之間反復(fù)訓(xùn)練與驗(yàn)證)
部署模型
機(jī)器學(xué)習(xí)需要什么?
算法,數(shù)據(jù),程序,評(píng)估,應(yīng)用。
應(yīng)用的方面:
數(shù)據(jù)挖掘,圖像識(shí)別,語(yǔ)音和自然語(yǔ)言,統(tǒng)計(jì)學(xué)習(xí),計(jì)算機(jī)視覺。
通過(guò)virtualenv來(lái)創(chuàng)建虛擬環(huán)境
通過(guò)anaconda來(lái)創(chuàng)建虛擬環(huán)境
virtualenv
virtualenv就是用來(lái)為每一個(gè)項(xiàng)目創(chuàng)建一套“獨(dú)立隔離”的Python運(yùn)行環(huán)境的工具
pip install virtualenv
創(chuàng)建虛擬環(huán)境: virtualenv -p /usr/bin/python2.7 --no-site-packages venvs
啟動(dòng)虛擬環(huán)境: source venvs/bin/activate
退出虛擬環(huán)境: deactivate
刪除虛擬環(huán)境: rm -r venvs
virtualenv -p /usr/local/bin/python --no-site-packages learn source learn/bin/activate deactivate rm -r learn
可以一次性通過(guò)別的機(jī)器上或虛擬環(huán)境里,將文件里羅列的第三方庫(kù)安裝起來(lái):
pip install -r requirements.txt
anaconda
安裝anaconda:anaconda download
# 查看幫助 conda -h # 基于python3.6版本創(chuàng)建一個(gè)名字為python36的環(huán)境 conda create --name python36 python=3.6 # 激活此環(huán)境 source activate python36 # 再來(lái)檢查python版本,顯示是 3.6 python -V # 退出當(dāng)前環(huán)境 source deactivate python36 # 刪除該環(huán)境 conda remove -n python36 --all # 或者 conda env remove -n python36 # 查看所以安裝的環(huán)境 conda info -escikit-learn
scikit-learn官網(wǎng)
機(jī)器學(xué)習(xí)地圖:
一定量的樣本
classification
clustering
regression
dimensionality reduction
機(jī)器學(xué)習(xí)問(wèn)題分類
監(jiān)督式學(xué)習(xí)
回歸分析:連續(xù)性數(shù)值,使用一組已知對(duì)應(yīng)值的數(shù)據(jù)產(chǎn)生的模型,預(yù)測(cè)新數(shù)據(jù)的對(duì)應(yīng)值。
分類問(wèn)題:類別標(biāo)簽,根據(jù)已知標(biāo)簽的訓(xùn)練數(shù)據(jù)集,產(chǎn)生一個(gè)新模型,用以預(yù)測(cè)測(cè)試數(shù)據(jù)集的標(biāo)簽。
非監(jiān)督式學(xué)習(xí)
降低維度:產(chǎn)生一有最大變異數(shù)的字段線性組合,可用來(lái)降低原本問(wèn)題的維度與復(fù)雜度
分群?jiǎn)栴}:物以類聚(近朱者赤,近墨者黑)
利用正確的答案的數(shù)據(jù)來(lái)進(jìn)行學(xué)習(xí),就可以稱之為監(jiān)督式學(xué)習(xí)。
通過(guò)既有的答案來(lái)得到新的理論,調(diào)整一些演算的過(guò)程,建立模型。
同樣或者類似的數(shù)據(jù)放在一起,透過(guò)放在一起的數(shù)據(jù),分析學(xué)習(xí),找到需要知道的答案,稱之為非監(jiān)督式學(xué)習(xí)。
回歸分析線性回歸是研究單一因變量與一個(gè)或上一個(gè)自變量之間的關(guān)系
線性回歸有兩個(gè)主要用處:
預(yù)測(cè)指的是用已觀察的變量來(lái)預(yù)測(cè)因變量
因果分析則是將自變量當(dāng)作因變量發(fā)生的原因
線性回歸
數(shù)學(xué)模型:
y = ax + b # 簡(jiǎn)單線性回歸 y = ax^2 + bx + c # 二項(xiàng)式線性回歸
最小平方估計(jì)法:
找出殘差平方和最小的一條線
殘差計(jì)算公式
殘差平方和計(jì)算公式
繪制資料:
import pandas as pd from matplotlib import pyplot as plt df = pd.read_csv("Data/salary.csv", index_col=0) X = df[["year"]] Y = df["salary"].values plt.scatter(X, Y, color="blue") plt.xlabel("year") plt.ylabel("salary") plt.show()
繪制回歸線:
import pandas as pd from matplotlib import pyplot as plt from sklearn.linear_model import LinearRegression df = pd.read_csv("Data/salary.csv", index_col=0) X = df[["year"]] Y = df["salary"].values plt.scatter(X, Y, color="blue") plt.xlabel("year") plt.ylabel("salary") # 使用scikit-learn進(jìn)行預(yù)測(cè) regr = LinearRegression() regr.fit(X, Y) # 將回歸線繪制在圖上 print("Coefficients:", regr.coef_) # 漲幅 print("Intercept:", regr.intercept_) plt.plot(X, regr.predict(X), color="green", linewidth=3) plt.show()
二次項(xiàng)線性回歸:
import pandas as pd from matplotlib import pyplot as plt from sklearn.linear_model import LinearRegression from sklearn.preprocessing import PolynomialFeatures df = pd.read_csv("Data/salary.csv", index_col=0) X = df[["year"]] Y = df["salary"].values # 使用scikit-learn進(jìn)行預(yù)測(cè) poly_reg = PolynomialFeatures(degree=2) # 二次項(xiàng) X_ = poly_reg.fit_transform(X) regr = LinearRegression() regr.fit(X_, Y) X2 = X.sort_values(["year"]) X2_ = poly_reg.fit_transform(X2) plt.scatter(X, Y, color="blue") plt.plot(X2, regr.predict(X2_), color="green", linewidth=3) plt.xlabel("year") plt.ylabel("salary") # 將回歸線繪制在圖上 print("Coefficients:", regr.coef_) print("Intercept:", regr.intercept_) plt.show()
回歸模型評(píng)估
驗(yàn)證線性關(guān)系是顯著的。
驗(yàn)證方法通過(guò)“假設(shè)”
目的:自變量是否有能力去影響自變量。
import pandas as pd from matplotlib import pyplot as plt import statsmodels.api as sm df = pd.read_csv("Data/house-prices.csv") # 建立Dummy Variable s = pd.get_dummies(df["Brick"]) # 根據(jù)字段中的值,建立新的字段,并新的字段的值為0或1 # 必須去掉一個(gè)字段,去掉的這個(gè)字段通過(guò)其它一個(gè)字段生成。(如果同時(shí)存在,會(huì)產(chǎn)生共線性問(wèn)題) t = pd.get_dummies(df["Neighborhood"]) # 必須去掉一個(gè)字段,去掉的這個(gè)字段通過(guò)其它二個(gè)字段生成。 house = pd.concat([df, s, t], axis=1) del house["No"] del house["West"] del house["Brick"] del house["Neighborhood"] del house["Home"] X = house[["SqFt", "Bedrooms", "Bathrooms", "Offers", "Yes", "East", "North"]] Y = house["Price"].values X2 = sm.add_constant(X) est = sm.OLS(Y, X2) est2 = est.fit() print(est2.summary()) # 回歸模型評(píng)估數(shù)據(jù)
假設(shè)顯著性標(biāo)準(zhǔn)是0.01
推翻假設(shè)的標(biāo)準(zhǔn)是p值 < 0.01 (假設(shè)不成立,可以推導(dǎo)出二者變量是密切聯(lián)系)
t = 2.658, P(>t)=0.009, P(0.09) < 0.01是不成立的,假設(shè)也不成立
驗(yàn)證二者關(guān)系顯著
R-squared: 可作為自變量預(yù)測(cè)因變量準(zhǔn)確度的指標(biāo)。 值越大越準(zhǔn)確,0.5以上可以作為指標(biāo)。
AIC: 鼓勵(lì)數(shù)據(jù)擬合的優(yōu)良性但是盡量避免出現(xiàn)過(guò)度擬合的情況。所以優(yōu)先考慮的模型應(yīng)該是AIC值最小的那一個(gè).
分析房天下的上海徐匯區(qū)數(shù)據(jù)
import pandas as pd import time from sklearn.linear_model import LinearRegression from matplotlib import pyplot as plt import statsmodels.api as sm df = pd.read_excel("Data/house_price_regression.xlsx") # 處理數(shù)據(jù) now_year = time.localtime(time.time()).tm_year df["age"] = df["age"].map(lambda e: now_year - int(e.strip().strip("建筑年代:")) ) df[["room", "living_room"]] = df["layout"].str.extract(r"(d+)室(d+)廳") # 抽取字段, 房間和廳 df["room"] = df["room"].astype(int) df["living_room"] = df["living_room"].astype(int) df["total_floor"] = df["floor_info"].str.extract(r"共(d+)層") df["total_floor"] = df["total_floor"].astype(int) df["floor"] = df["floor_info"].str.extract(r"^(.)層") df["direction"] = df["direction"].map(lambda e: e.strip()) del df["layout"] del df["floor_info"] del df["title"] del df["url"] # 將values處理成字段 df = pd.concat([df, pd.get_dummies(df["direction"]), pd.get_dummies(df["floor"])], axis=1) del df["direction"] del df["floor"] del df["南北向"] del df["低"] # 繪制散布圖 # 房?jī)r(jià) 與 平米 df[["price", "area"]].plot(kind="scatter", x="area", y="price", figsize=[10, 5]) # 繪制線性模型 x = df[["area"]] y = df["price"] regr = LinearRegression() regr.fit(x, y) print("Coefficent: {}".format(regr.coef_)) print("Intercept: {}".format(regr.intercept_)) plt.scatter(x, y, color="blue") plt.plot(x, regr.predict(x), linewidth=2, color="red") plt.xlabel("area") plt.ylabel("price") # 多元回歸預(yù)測(cè) df_col = list(df.columns) del df_col[2] x = df[df_col] y = df["price"] regr = LinearRegression() regr.fit(x, y) print(x.info()) # 評(píng)估回歸模型 x2 = sm.add_constant(x) est = sm.OLS(y, x2) est2 = est.fit() print(est2.summary()) plt.show()資料分類
監(jiān)督式學(xué)習(xí)
分類問(wèn)題:根據(jù)已知標(biāo)簽的訓(xùn)練數(shù)據(jù)集,產(chǎn)生一個(gè)新模型,用以預(yù)測(cè)測(cè)試數(shù)據(jù)集的標(biāo)簽
決策樹:
用于計(jì)算一個(gè)系統(tǒng)中的失序現(xiàn)象,也就是計(jì)算該系統(tǒng)混亂的程度。
決策樹的目的行為上的預(yù)測(cè)和實(shí)質(zhì)的分類
單一變量的計(jì)算:
Entropy = -p * log * p - q * log * q
多變量的計(jì)算:
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/42627.html
摘要:深度學(xué)習(xí)在過(guò)去的幾年里取得了許多驚人的成果,均與息息相關(guān)。機(jī)器學(xué)習(xí)進(jìn)階筆記之一安裝與入門是基于進(jìn)行研發(fā)的第二代人工智能學(xué)習(xí)系統(tǒng),被廣泛用于語(yǔ)音識(shí)別或圖像識(shí)別等多項(xiàng)機(jī)器深度學(xué)習(xí)領(lǐng)域。零基礎(chǔ)入門深度學(xué)習(xí)長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)。 多圖|入門必看:萬(wàn)字長(zhǎng)文帶你輕松了解LSTM全貌 作者 | Edwin Chen編譯 | AI100第一次接觸長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM)時(shí),我驚呆了。原來(lái),LSTM是神...
閱讀 1740·2021-10-18 13:30
閱讀 2621·2021-10-09 10:02
閱讀 2969·2021-09-28 09:35
閱讀 2097·2019-08-26 13:39
閱讀 3528·2019-08-26 13:36
閱讀 1956·2019-08-26 11:46
閱讀 1139·2019-08-23 14:56
閱讀 1700·2019-08-23 10:38