日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

一些算法的小结

發(fā)布時(shí)間:2023/12/19 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一些算法的小结 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

總第54篇

算法目的:分類(lèi)、預(yù)測(cè)

算法分類(lèi):監(jiān)督型、非監(jiān)督型

算法的核心:你有什么數(shù)據(jù)、你要解決什么問(wèn)題


01|線性回歸:

1、什么是回歸

回歸,指研究一組隨機(jī)變量(Y1 ,Y2 ,…,Yi)和另一組(X1,X2,…,Xk)變量之間關(guān)系的統(tǒng)計(jì)分析方法,又稱(chēng)多重回歸分析。

2、回歸算法

根據(jù)給予的訓(xùn)練集訓(xùn)練出一定的回歸模型(即找出最佳回歸直線 ),通過(guò)給訓(xùn)練出來(lái)的回歸模型輸入測(cè)試集即可得出相應(yīng)的預(yù)測(cè)結(jié)果值。下圖為工資與獎(jiǎng)金的回歸模型。

test點(diǎn)到回歸直線距離的平方和稱(chēng)為殘差平方和,這部分是由自變量以外的隨機(jī)因素及非線性因素作用的結(jié)果,理想情況下該平方和為0(即test點(diǎn)就在回歸線上),所以我們需要盡可能多的減小這部分值。具體的方法有:

  • 最小二乘法

  • 梯度下降法

3、衡量回歸效果的指標(biāo)——R^2

R^2=SSR/SST ?(回歸平方和/總離差平方和)

R^2——[0,1],越接近1說(shuō)明回歸平方和在總離差平方和中的占比越大,回歸效果越好;越接近于0,結(jié)果相反。

4、代碼實(shí)現(xiàn)(基于sklearn)

from sklearn import linear_model

reg = linear_model.LinearRegression() #創(chuàng)建回歸模型

reg.fit(feature_train,target_train) #擬合數(shù)據(jù)

pred=reg.predict(feature_test)#用來(lái)預(yù)測(cè)某個(gè)(組)值對(duì)應(yīng)的結(jié)果

reg.coef_#用來(lái)獲取訓(xùn)練出來(lái)的回歸方程的斜率

reg.intercept_#用來(lái)獲取訓(xùn)練出來(lái)的回歸方程的截距

reg.score(feature_test,target_test)#用來(lái)獲取回歸方程在測(cè)試數(shù)據(jù)上的R平方

reg.score(feature_train,target_train)#用來(lái)獲取回歸方程在測(cè)試數(shù)據(jù)上的R平方


02|決策樹(shù):

1、決策樹(shù)是什么

決策樹(shù)(Decision Tree)是一種簡(jiǎn)單但是廣泛使用的分類(lèi)器。通過(guò)訓(xùn)練數(shù)據(jù)構(gòu)建決策樹(shù),可以高效的對(duì)未知的數(shù)據(jù)進(jìn)行分類(lèi)。

2、算法原理/步驟

首先需要找到影響分類(lèi)的變量(特征),然后給這些特征進(jìn)行優(yōu)先級(jí)排序,根據(jù)優(yōu)先級(jí)順序依次進(jìn)行分割, 直到每個(gè)分支下的數(shù)據(jù)都屬于同一類(lèi)型,無(wú)法再進(jìn)行分割時(shí),分割結(jié)束,算法結(jié)束。

比如現(xiàn)在有兩個(gè)特征年齡和性別,是先按年齡進(jìn)行劃分還是先按性別進(jìn)行劃分,這就需要看兩者的優(yōu)先級(jí)順序。

衡量?jī)?yōu)先級(jí)順序的指標(biāo)為:信息增益。在劃分?jǐn)?shù)據(jù)集之前之后信息發(fā)生的變化稱(chēng)為信息增益,我們可以計(jì)算每個(gè)每個(gè)特征值劃分?jǐn)?shù)據(jù)集獲得的信息增益,獲得信息增益最高的特征就是最好的選擇。

3、代碼實(shí)現(xiàn)(基于sklearn)

from sklearn import tree

from sklearn.metrics import accuracy_score

clf=tree.DecisionTreeClassifier(min_samples_split=40) #創(chuàng)建分類(lèi)器

clf.fit(features_train, labels_train) #擬合數(shù)據(jù)

pred=clf.predict(features_test) #數(shù)據(jù)預(yù)測(cè)

print accuracy_score(pred,labels_test)#預(yù)測(cè)準(zhǔn)確率


03|樸素貝葉斯:

1、樸素貝葉斯算法原理

假設(shè)有個(gè)值A(chǔ)以及N個(gè)分類(lèi),現(xiàn)在要把A值進(jìn)行歸類(lèi),分別計(jì)算A被分在各個(gè)類(lèi)中的概率,選擇概率最大的分類(lèi)就是A值屬于的分類(lèi)。

2、代碼實(shí)現(xiàn)(基于sklearn)

from sklearn.naive_bayes import GaussianNB

from sklearn.metrics import accuracy_score

clf = GaussianNB() #創(chuàng)建分類(lèi)器

t0 = time()#初始化訓(xùn)練所用的時(shí)間

clf.fit(features_train,labels_train) #擬合數(shù)據(jù)

print "training time:", round(time()-t0, 3), "s"#計(jì)算訓(xùn)練所用的時(shí)間

t0 = time()#初始化預(yù)測(cè)所用的時(shí)間

pred = clf.predict(features_test) #預(yù)測(cè)分類(lèi)

print "predict time:", round(time()-t0, 3), "s"#計(jì)算預(yù)測(cè)所用的時(shí)間

print accuracy_score(pred,labels_test)#計(jì)算分類(lèi)準(zhǔn)確率


04|支持向量機(jī) (KNN):

1、SVM算法原理

SVM算法就是找到最佳分割平面,將數(shù)據(jù)分割開(kāi)來(lái)。最佳分割平面就是距離分割平面最近點(diǎn)的距離最大化最大化對(duì)應(yīng)的平面(線)。

2、代碼實(shí)現(xiàn)(基于sklearn)

from sklearn import svm

from sklearn.metrics import accuracy_score

features_train = features_train[:len(features_train)/100] #縮小為1%的訓(xùn)練集

labels_train = labels_train[:len(labels_train)/100] #縮小為1%的訓(xùn)練集

clf = svm.SVC(C=10000.,kernel='rbf')#創(chuàng)建分類(lèi)器

#t0 = time()

clf.fit(features_train,labels_train)#擬合數(shù)據(jù)

#print "training time:", round(time()-t0, 3), "s" #計(jì)算訓(xùn)練時(shí)間

pred = clf.predict(features_test)#預(yù)測(cè)數(shù)據(jù)

print accuracy_score(pred,labels_test)#計(jì)算準(zhǔn)確率


05|K—近鄰算法(KNN):

1、KNN算法原理

已經(jīng)待分類(lèi)值A(chǔ)以及m個(gè)已知值,計(jì)算值A(chǔ)與m個(gè)值的距離,選取距離最近的前K個(gè)值,看這個(gè)k個(gè)值中對(duì)應(yīng)的哪個(gè)種類(lèi)數(shù)較多,則值A(chǔ)就屬于哪個(gè)分類(lèi)。

2、代碼實(shí)現(xiàn)(基于sklearn)

from sklearn.neighbors.nearest_centroid import NearestCentroid

from sklearn.metrics import accuracy_score

clf = NearestCentroid()

clf.fit(features_train, labels_train)

pred = clf.predict(features_test)

print accuracy_score(pred,labels_test)


06|K—均值聚類(lèi)算法(Kmeans):

1、算法原理

首先,隨機(jī)確定k個(gè)初始點(diǎn)作為質(zhì)心,然后再進(jìn)行質(zhì)心的優(yōu)化,優(yōu)化原則每個(gè)簇中的每個(gè)點(diǎn)到質(zhì)心的距離之和最小,最后達(dá)到聚類(lèi)分類(lèi)的效果。

2、代碼實(shí)現(xiàn)(基于sklearn)

from sklearn.cluster import KMeans#導(dǎo)入Kmeans聚類(lèi)模塊

kmeans = KMeans(n_clusters=2, random_state=0)#創(chuàng)建聚類(lèi)器

kmeans.fit(X)

kmeans.labels_

kmeans.predict([]) #預(yù)測(cè)

kmeans.cluster_centers_#質(zhì)心顯示

總結(jié)

以上是生活随笔為你收集整理的一些算法的小结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。