從前幾天起我就開始了愉快的機器學習,這裏記錄一下學習筆記,我看的是吳恩達老師的視頻,這篇博客將會按吳老師的教學目錄來集合各優良文章,以及部分的個人我的總結php
一、 監督學習與無監督學習html
監督:給定一個算法,須要部分數據集有正確的答案python
分類和迴歸:給定一個樣本特徵 , 咱們但願預測其對應的屬性值 , 若是 是離散的, 那麼這就是一個分類問題,反之,若是 是連續的實數, 這就是一個迴歸問題。算法
無監督學習:dom
聚類算法:給定一組樣本特徵 , 咱們沒有對應的屬性值 , 而是想發掘這組樣本在維空間的分佈, 好比分析哪些樣本靠的更近,哪些樣本之間離得很遠, 這就是屬於聚類問題。機器學習
雞尾酒聚會算法:https://blog.csdn.net/mrharvey/article/details/18598605函數
二、 代價函數學習
實質爲線性函數的擬合度問題測試
參考https://www.cnblogs.com/luozhenj/articles/7639484.htmlspa
相應的代碼(python)
https://o-my-chenjian.com/2017/05/26/Cost-Function-Of-ML/
三、梯度降低
這玩意跟dfs同樣,拿吳老師的舉例,下山,每一步找最陡的下去,最終到最低點
這篇文章寫的比較好 https://www.jianshu.com/p/c7e642877b0e
四、多項式迴歸
概念見這篇文章:https://blog.csdn.net/zoe9698/article/details/82386914
實踐見這篇:https://www.cnblogs.com/Belter/p/8530222.html
五、正規方程
公式推導:https://blog.csdn.net/zoe9698/article/details/82419330
python實現:https://www.lmlphp.com/user/3178/article/item/27041/
接下來就是與識別有關的內容,首先是分類問題
六、分類
理論介紹:https://www.cnblogs.com/lsyz/p/8711103.html
而後我找到了skleran這個庫,嘗試去編寫一些代碼來進行分析
今天先學會怎麼生成數據吧23333
from sklearn import datasets#引入數據集 #構造的各類參數能夠根據本身須要調整 X,y=datasets.make_regression(n_samples=200,n_features=2,n_targets=2,noise=1) ###繪製構造的數據### import matplotlib.pyplot as plt plt.figure() plt.scatter(X,y) plt.show()
還有那啥datatest.load_xxxx
今天繼續學習這個庫
首先是KNN
import numpy as np from sklearn import datasets from sklearn.cross_validation import train_test_split from sklearn.neighbors import KNeighborsClassifier iris = datasets.load_iris() iris_X = iris.data iris_Y = iris.target # print(iris_X[:2,:]) # print(iris_Y) ##將上面的數據集分紅測試集和訓練集,其中測試集佔30% X_train,X_test,Y_train,Y_test = train_test_split(iris_X,iris_Y,test_size=0.3) ##此時數據打亂了 #print(Y_train) knn = KNeighborsClassifier() ##訓練 knn.fit(X_train,Y_train) ##預測是哪一種花 print(knn.predict(X_test)) ##打印真實值 print(Y_test)
下面是聚類,2到多維
import numpy as np import matplotlib.pyplot as plt %matplotlib inline from sklearn.datasets.samples_generator import make_blobs # X爲樣本特徵,Y爲樣本簇類別, 共1000個樣本,每一個樣本4個特徵,共4個簇,簇中心在[-1,-1], [0,0],[1,1], [2,2], 簇方差分別爲[0.4, 0.2, 0.2,0.2] X, y = make_blobs(n_samples=1000, n_features=2, centers=[[-1,-1], [0,0], [1,1], [2,2]], cluster_std=[0.4, 0.2, 0.2, 0.2], random_state =9) plt.scatter(X[:, 0], X[:, 1], marker='o') plt.show()
咱們改一下數據來看一下效果
import numpy as np import matplotlib.pyplot as plt from sklearn.datasets.samples_generator import make_blobs # X爲樣本特徵,Y爲樣本簇類別, 共1000個樣本,每一個樣本4個特徵,共4個簇,簇中心在[-1,-1], [0,0],[1,1], [2,2], 簇方差分別爲[0.4, 0.3, 0.2,0.1] X, y = make_blobs(n_samples=1000, n_features=2, centers=[[-1,-1], [0,0], [1,1], [2,2]], cluster_std=[0.4, 0.3, 0.2, 0.1], random_state =9) plt.scatter(X[:, 0], X[:, 1], marker='o') plt.show()
因此差很少應該能理解對應參數的含義了吧,這是二維數據和二維特徵
咱們用K-Means聚類方法來作聚類,首先選擇k=2
import numpy as np import matplotlib.pyplot as plt from sklearn.datasets.samples_generator import make_blobs # X爲樣本特徵,Y爲樣本簇類別, 共1000個樣本,每一個樣本4個特徵,共4個簇,簇中心在[-1,-1], [0,0],[1,1], [2,2], 簇方差分別爲[0.4, 0.2, 0.2] X, y = make_blobs(n_samples=1000, n_features=2, centers=[[-1,-1], [0,0], [1,1], [2,2]], cluster_std=[0.4, 0.3, 0.2, 0.1], random_state =9) plt.scatter(X[:, 0], X[:, 1], marker='o') plt.show() from sklearn.cluster import KMeans y_pred = KMeans(n_clusters=2, random_state=9).fit_predict(X) plt.scatter(X[:, 0], X[:, 1], c=y_pred) plt.show()
k=3,4只需改一下clusters
咱們選擇一個效果評判函數:
from sklearn import metrics metrics.calinski_harabaz_score(X, y_pred)
下面是相應的kmeans理論:https://www.cnblogs.com/bourneli/p/3645049.html