happy machine learning(First One)

從前幾天起我就開始了愉快的機器學習,這裏記錄一下學習筆記,我看的是吳恩達老師的視頻,這篇博客將會按吳老師的教學目錄來集合各優良文章,以及部分的個人我的總結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

相關文章
相關標籤/搜索