一機器學習html
算法模型對象:特殊的對象,在該對象中已經集成好一個方程(沒有求出解的方程)前端
模型對象的做用:經過方程實現預測或者分類算法
樣本數據(df,np):後端
特徵數據: 自變量dom
目標(標籤)數據: 因變量機器學習
模型對象的分類:ide
有監督學習: 模型須要的樣本數據中存在特徵和目標性能
無監督學習: 模型須要的樣本數據中存在特徵學習
半監督學習: 模型須要的樣本數據部分須要有特徵和目標,部分只須要特徵數據測試
sklearn模塊: 封裝了多種模型對象。
導入 sklearn ,創建線性迴歸算法模型對象
#1.導包 from sklearn.linear_model import LinearRegression #2.實例化模型對象 linner = LinearRegression() #3.提取樣本數據 #4.訓練模型 linner.fit(near_city_dist.reshape(-1,1),near_city_max_temp) #5.預測 linner.predict(38) linner.score(near_city_dist.reshape(-1,1),near_city_max_temp) #繪製迴歸曲線 x = np.linspace(10,70,num=100) y = linner.predict(x.reshape(-1,1)) plt.scatter(near_city_dist,near_city_max_temp) plt.scatter(x,y,marker=1)
樣本集:用於對機器學習算法模型對象進行訓練,樣本集一般爲一個DataFrame
特徵數據: 特徵數據的變化會影響目標數據的變化,一般爲多列
目標數據: 結果, 一般爲一列
二個機器學習項目流程
1.實際問題抽象成數學問題
指的咱們明確能夠得到什麼樣的數據,目標是一個分類仍是迴歸或者是聚類的問題,若是都不是的話,劃歸到其中的某類問題
2.獲取數據
獲取數據包括獲取原始數據以及從原始數據中通過特徵工程從原始數據中提取訓練,測試數據。機器學習比賽中元素數據都是直接提供的,可是實際問題須要本身得到原始數據。「數據決定機器學習結果的上限,而算法只是儘量的逼近這個上限」,
3.特徵工程
特徵工程包括從原始數據中特徵構建,特徵提取,特徵選擇。特徵工程作的好能發揮原始數據的最大效力,每每可以使得算法的效果和性能獲得顯著的提高,有時能使簡單的模型的效果比複雜的模型效果好。數據挖掘的大部分時間就花在特徵工程上面,是機器學習很是基礎而又必備的步驟。數據預處理、數據清洗、篩選顯著特徵、摒棄非顯著特徵等等都很是重要。
4.訓練模型、診斷、調優
模型診斷中相當重要的是判斷過擬合、欠擬合,常見的方法是繪製學習曲線,交叉驗證。經過增長訓練的數據量、下降模型複雜度來下降過擬合的風險,提升特徵的數量和質量、增長模型複雜來防止欠擬合。診斷後的模型須要進行進一步調優,調優後的新模型須要從新診斷,這是一個反覆迭代不斷逼近的過程,須要不斷的嘗試,進而達到最優的狀態。
5.模型驗證、偏差分析
經過測試數據,驗證模型的有效性,觀察偏差樣本,分析偏差產生的緣由,每每能使得咱們找到提高算法性能的突破點。偏差分析主要是分析出偏差來源與數據、特徵、算法。
6.模型融合
提高算法的準確度主要方法是模型的前端(特徵工程、清洗、預處理、採樣)和後端的模型融合。在機器學習比賽中模型融合很是常見,基本都能使得效果有必定的提高。
7.上線運行
這一部份內容主要跟工程實現的相關性比較大。工程上是結果導向,模型在線上運行的效果直接決定模型的成敗。 不單純包括其準確程度、偏差等狀況,還包括其運行的速度(時間複雜度)、資源消耗程度(空間複雜度)、穩定性是否可接受。
三.K-近鄰算法(KNN)
簡單地說,K-近鄰算法採用測量不一樣特徵值之間的距離方法進行分類。
缺點:時間複雜度高、空間複雜度高。
適用數據範圍:數值型和標稱型。
存在一個樣本數據集合,也稱做訓練樣本集,而且樣本集中每一個數據都存在標籤,即咱們知道樣本集中每一數據 與所屬分類的對應關係。輸人沒有標籤的新數據後,將新數據的每一個特徵與樣本集中數據對應的 特徵進行比較,而後算法提取樣本集中特徵最類似數據(最近鄰)的分類標籤。通常來講,咱們 只選擇樣本數據集中前K個最類似的數據,這就是K-近鄰算法中K的出處,一般K是不大於20的整數。 最後 ,選擇K個最類似數據中出現次數最多的分類,做爲新數據的分類。
回到前面電影分類的例子,使用K-近鄰算法分類愛情片和動做片。有人曾經統計過不少電影的打鬥鏡頭和接吻鏡頭,下圖顯示了6部電影的打鬥和接吻次數。假若有一部未看過的電影,如何肯定它是愛情片仍是動做片呢?咱們可使用K-近鄰算法來解決這個問題。
首先咱們須要知道這個未知電影存在多少個打鬥鏡頭和接吻鏡頭,上圖中問號位置是該未知電影出現的鏡頭數圖形化展現,具體數字參見下表。
即便不知道未知電影屬於哪一種類型,咱們也能夠經過某種方法計算出來。首先計算未知電影與樣本集中其餘電影的距離,如圖所示。
如今咱們獲得了樣本集中全部電影與未知電影的距離,按照距離遞增排序,能夠找到K個距 離最近的電影。假定k=3,則三個最靠近的電影依次是California Man、He's Not Really into Dudes、Beautiful Woman。K-近鄰算法按照距離最近的三部電影的類型,決定未知電影的類型,而這三部電影全是愛情片,所以咱們斷定未知電影是愛情片。
歐氏距離是最多見的距離度量,衡量的是多維空間中各個點之間的絕對距離。公式以下:
Type Markdown and LaTeX: α2α2
身高、體重、鞋子尺碼數據對應性別
import numpy as np import pandas as pd from pandas import DataFrame,Series feature = np.array([[170,75,41],[166,65,38],[177,80,43],[179,80,43],[170,60,40],[160,55,38]]) target = np.array(['男','女','男','男','女','女']) from sklearn.neighbors import KNeighborsClassifier knn = KNeighborsClassifier(n_neighbors=3) knn.fit(feature,target) knn.score(feature,target) knn.predict(np.array([[176,71,38]]))
用於分類
導包,機器學習的算數KNN,數據藍蝴蝶
import sklearn.datasets as datasets iris = datasets.load_iris() iris
提取樣本數據
feature = iris['data'] target = iris['target']
將樣本數據進行隨機打亂
np.random.seed(1) np.random.shuffle(feature) np.random.seed(1) np.random.shuffle(target)
feature.shape
獲取訓練樣本數據和測試樣本數據
#訓練數據 x_train = feature[:140] y_train = target[:140] #測試數據 x_test = feature[-10:] y_test =target[-10:]
實例化模型對象 訓練模型
knn = KNeighborsClassifier(n_neighbors=10)
knn.fit(x_train,y_train)
knn.score(x_train,y_train)
print('預測分類:',knn.predict(x_test)) print('真實分類:',y_test)