最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python?數(shù)據(jù)挖掘算法的過(guò)程詳解

 更新時(shí)間:2022年02月23日 15:03:39   作者:Camile8  
這篇文章主要介紹了python?數(shù)據(jù)挖掘算法,首先給大家介紹了數(shù)據(jù)挖掘的過(guò)程,基于sklearn主要的算法模型講解,給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

1、首先簡(jiǎn)述數(shù)據(jù)挖掘的過(guò)程

第一步:數(shù)據(jù)選擇

可以通過(guò)業(yè)務(wù)原始數(shù)據(jù)、公開的數(shù)據(jù)集、也可通過(guò)爬蟲的方式獲取。

第二步: 數(shù)據(jù)預(yù)處理

數(shù)據(jù)極可能有噪音,不完整等缺陷,需要對(duì)數(shù)據(jù)進(jìn)行數(shù)據(jù)標(biāo)準(zhǔn)化,方法有min-max 標(biāo)準(zhǔn)化,z-score 標(biāo)準(zhǔn)化,修正的標(biāo)準(zhǔn)z-score。

第三步:特征值數(shù)據(jù)轉(zhuǎn)換

將數(shù)據(jù)提取特征使這些數(shù)據(jù)符合特定數(shù)據(jù)挖掘算法的分析模型。數(shù)據(jù)模型有很多,等下詳細(xì)講解。

第四步:模型訓(xùn)練

選擇好的數(shù)據(jù)挖掘算法對(duì)數(shù)據(jù)進(jìn)行訓(xùn)練

第五步:測(cè)試模型+效果評(píng)估

有兩種主流方法:

十折交叉驗(yàn)證:將數(shù)據(jù)集隨機(jī)分割成十個(gè)等份,每次用9份數(shù)據(jù)做訓(xùn)練集,1份數(shù)據(jù)做測(cè)試集,如此迭代10次。十折交叉驗(yàn)證的關(guān)鍵在于較平均地分為10份。

N折交叉驗(yàn)證又稱為留一法:用幾乎所有的數(shù)據(jù)進(jìn)行訓(xùn)練,然后留一個(gè)數(shù)據(jù)進(jìn)行測(cè)試,并迭代每一數(shù)據(jù)測(cè)試。留一法的優(yōu)點(diǎn)是:確定性。

第六步:模型使用

使用訓(xùn)練好的模型對(duì)數(shù)據(jù)進(jìn)行預(yù)測(cè)。

第七步:解釋與評(píng)價(jià)

對(duì)數(shù)據(jù)挖掘后的信息加以分析解釋,并應(yīng)用于實(shí)際的工作領(lǐng)域。

2、主要的算法模型講解 ——基于sklearn

1)線性回歸:希望所有點(diǎn)都落在直線上,所有點(diǎn)離直線的距離最近。首先假設(shè)好y=ax+b中a和b的值,然后計(jì)算每個(gè)數(shù)據(jù)點(diǎn)到這條直線上的距離總和,目的是要使這個(gè)總和最小!

from sklearn.linear_model import LinearRegression
# 定義線性回歸模型
model = LinearRegression(fit_intercept=True, normalize=False, 
    copy_X=True, n_jobs=1)
"""
參數(shù)
---
    fit_intercept:是否計(jì)算截距。False-模型沒(méi)有截距
    normalize: 當(dāng)fit_intercept設(shè)置為False時(shí),該參數(shù)將被忽略。 如果為真,則回歸前的回歸系數(shù)X將通過(guò)減去平均值并除以l2-范數(shù)而歸一化。
     n_jobs:指定線程數(shù)
"""

2)邏輯回歸:二分算法,用于兩分類問(wèn)題。需要預(yù)測(cè)函數(shù)的“大概形式”, 比如是線性還是非線性的。

上面有提到,該數(shù)據(jù)集需要一個(gè)線性的邊界。 不同數(shù)據(jù)需要不同的邊界。

from sklearn.linear_model import LogisticRegression
# 定義邏輯回歸模型
model = LogisticRegression(penalty='l2', dual=False, tol=0.0001, C=1.0, 
    fit_intercept=True, intercept_scaling=1, class_weight=None, 
    random_state=None, solver='liblinear', max_iter=100, multi_class='ovr', 
    verbose=0, warm_start=False, n_jobs=1)
 
"""參數(shù)
---
    penalty:使用指定正則化項(xiàng)(默認(rèn):l2)
    dual: n_samples > n_features取False(默認(rèn))
    C:正則化強(qiáng)度的反,值越小正則化強(qiáng)度越大
    n_jobs: 指定線程數(shù)
    random_state:隨機(jī)數(shù)生成器
    fit_intercept: 是否需要常量
"""

3)樸素貝葉斯算法NB:用于判斷某件事的發(fā)生概率,我就曾用此算法做過(guò)輿情分類器。將一些語(yǔ)句變?yōu)?1二維矩陣,計(jì)算詞語(yǔ)的出現(xiàn)頻率,從而判斷語(yǔ)句的情感色彩是怎樣的。

效率很高,但存在一定的錯(cuò)誤概率

from sklearn import naive_bayes
model = naive_bayes.GaussianNB() # 高斯貝葉斯
model = naive_bayes.MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None)
model = naive_bayes.BernoulliNB(alpha=1.0, binarize=0.0, fit_prior=True, class_prior=None)
"""
文本分類問(wèn)題常用MultinomialNB
參數(shù)
---
    alpha:平滑參數(shù)
    fit_prior:是否要學(xué)習(xí)類的先驗(yàn)概率;false-使用統(tǒng)一的先驗(yàn)概率
    class_prior: 是否指定類的先驗(yàn)概率;若指定則不能根據(jù)參數(shù)調(diào)整
    binarize: 二值化的閾值,若為None,則假設(shè)輸入由二進(jìn)制向量組成
"""

4)決策樹DT:類似流程圖的樹結(jié)構(gòu),它使用分支方法來(lái)說(shuō)明決策的每個(gè)可能結(jié)果。樹中的每個(gè)節(jié)點(diǎn)代表對(duì)特定變量的測(cè)試 - 每個(gè)分支都是該測(cè)試的結(jié)果。

from sklearn import tree 
model = tree.DecisionTreeClassifier(criterion='gini', max_depth=None, 
    min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, 
    max_features=None, random_state=None, max_leaf_nodes=None, 
    min_impurity_decrease=0.0, min_impurity_split=None,
     class_weight=None, presort=False)
"""參數(shù)
---
    criterion :特征選擇準(zhǔn)則gini/entropy
    max_depth:樹的最大深度,None-盡量下分
    min_samples_split:分裂內(nèi)部節(jié)點(diǎn),所需要的最小樣本樹
    min_samples_leaf:葉子節(jié)點(diǎn)所需要的最小樣本數(shù)
    max_features: 尋找最優(yōu)分割點(diǎn)時(shí)的最大特征數(shù)
    max_leaf_nodes:優(yōu)先增長(zhǎng)到最大葉子節(jié)點(diǎn)數(shù)
    min_impurity_decrease:如果這種分離導(dǎo)致雜質(zhì)的減少大于或等于這個(gè)值,則節(jié)點(diǎn)將被拆分。
"""

5)支持向量機(jī)SVM:就是判斷線性可分不可分,能不能用直線分割兩類數(shù)據(jù)!理論可以推廣到三維,甚至思維以上的特征空間。三維使用平面來(lái)分隔數(shù)據(jù),四維和四維以上因?yàn)槿祟?無(wú)法直觀的感知出來(lái),所以畫不出來(lái),但是能分隔數(shù)據(jù),存在這樣的平面叫做超平面。

from sklearn.svm import SVC
model = SVC(C=1.0, kernel='rbf', gamma='auto')
"""參數(shù)
---
    C:誤差項(xiàng)的懲罰參數(shù)C
    gamma: 核相關(guān)系數(shù)。浮點(diǎn)數(shù),If gamma is ‘a(chǎn)uto' then 1/n_features will be used instead.
"""

6)k近鄰算法KNN:采用測(cè)量不同特征值之間距離的方法對(duì)數(shù)據(jù)進(jìn)行分類的一個(gè)算法。

給定一個(gè)樣本的集合,這里稱為訓(xùn)練集,并且樣本中每個(gè)數(shù)據(jù)都包含標(biāo)簽。對(duì)于新輸入的一個(gè)不包含標(biāo)簽的數(shù)據(jù),通過(guò)計(jì)算這個(gè)新的數(shù)據(jù)與每一個(gè)樣本之間的距離,選取前k個(gè),通常k小于20,以k個(gè)劇里最近的數(shù)據(jù)的標(biāo)簽中出現(xiàn)次數(shù)最多的標(biāo)簽作為該新加入的數(shù)據(jù)標(biāo)簽。

K近鄰算法,即是給定一個(gè)訓(xùn)練數(shù)據(jù)集,對(duì)新的輸入實(shí)例,在訓(xùn)練數(shù)據(jù)集中找到與該實(shí)例最鄰近的K個(gè)實(shí)例,這K個(gè)實(shí)例的多數(shù)屬于某個(gè)類,就把該輸入實(shí)例分類到這個(gè)類中。(這就類似于現(xiàn)實(shí)生活中少數(shù)服從多數(shù)的思想)根據(jù)這個(gè)說(shuō)法,咱們來(lái)看下引自維基百科上的一幅圖:

如果K=3,綠色圓點(diǎn)的最鄰近的3個(gè)點(diǎn)是2個(gè)紅色小三角形和1個(gè)藍(lán)色小正方形,少數(shù)從屬于多數(shù),基于統(tǒng)計(jì)的方法,判定綠色的這個(gè)待分類點(diǎn)屬于紅色的三角形一類。

如果K=5,綠色圓點(diǎn)的最鄰近的5個(gè)鄰居是2個(gè)紅色三角形和3個(gè)藍(lán)色的正方形,還是少數(shù)從屬于多數(shù),基于統(tǒng)計(jì)的方法,判定綠色的這個(gè)待分類點(diǎn)屬于藍(lán)色的正方形一類。

from sklearn import neighbors
#定義kNN分類模型
model = neighbors.KNeighborsClassifier(n_neighbors=5, n_jobs=1) # 分類
model = neighbors.KNeighborsRegressor(n_neighbors=5, n_jobs=1) # 回歸
"""參數(shù)
---
    n_neighbors: 使用鄰居的數(shù)目
    n_jobs:并行任務(wù)數(shù)
"""

7)K-均值聚類(K-means):

  • 定義目標(biāo)聚類數(shù)K,例如,k=3
  • 隨機(jī)初始化的 k 個(gè)聚類中心(controids)
  • 計(jì)算每個(gè)數(shù)據(jù)點(diǎn)到K個(gè)聚類中心的Euclidean Distance,然后將數(shù)據(jù)點(diǎn)分到Euclidean Distance最小的對(duì)應(yīng)類聚中心的那類
  • 針對(duì)每個(gè)類別,重新計(jì)算它的聚類中心;
  • 重復(fù)上面 3-4 兩步操作,直到達(dá)到某個(gè)中止條件(迭代次數(shù)、最小誤差變化等)

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
 
df = pd.DataFrame({"x": [25, 34, 22, 27, 33, 33, 31, 22, 35, 34, 67, 54, 57, 43, 50, 57, 59, 52, 65, 47, 49, 48, 35, 33, 44, 45, 38, 43, 51, 46],
                   "y": [79, 51, 53, 78, 59, 74, 73, 57, 69, 75, 51, 32, 40, 47, 53, 36, 35, 59, 59, 50, 25, 20, 14, 12, 20, 5,  29, 27, 8,  7]})
kmeans = KMeans(n_clusters=3).fit(df)
centroids = kmeans.cluster_centers_
# 打印類聚中心
print(type(centroids), centroids)
# 可視化類聚結(jié)果
fig, ax = plt.subplots()
ax.scatter(df['x'],df['y'],c=kmeans.labels_.astype(float),s=50, alpha=0.5)
ax.scatter(centroids[:, 0], centroids[:, 1], c='red', s=50)
plt.show()

和KNN所不同,K-均值聚類屬于無(wú)監(jiān)督學(xué)習(xí)。

監(jiān)督學(xué)習(xí)知道從對(duì)象(數(shù)據(jù))中學(xué)習(xí)什么,而無(wú)監(jiān)督學(xué)習(xí)無(wú)需知道所要搜尋的目標(biāo),它是根據(jù)算法得到數(shù)據(jù)的共同特征。比如用分類和聚類來(lái)說(shuō),分類事先就知道所要得到的類別,而聚類則不一樣,只是以相似度為基礎(chǔ),將對(duì)象分得不同的簇。

ps):我們?cè)跈C(jī)器學(xué)習(xí)中一直會(huì)遇到兩種問(wèn)題,一種是回歸問(wèn)題,一種是分類問(wèn)題。我們從字面上理解,很容易知道分類問(wèn)題其實(shí)是將我們現(xiàn)有的數(shù)據(jù)分成若干類,然后對(duì)于新的數(shù)據(jù),我們根據(jù)所分得類而進(jìn)行劃分;而回歸問(wèn)題是將現(xiàn)有數(shù)據(jù)擬合成一條函數(shù),根據(jù)所擬合的函數(shù)來(lái)預(yù)測(cè)新的數(shù)據(jù)。 這兩者的區(qū)別就在于輸出變量的類型?;貧w是定量輸出,或者說(shuō)是預(yù)測(cè)連續(xù)變量;分類問(wèn)題書定量輸出,預(yù)測(cè)離散變量。Po一張我在知乎上看到的一張圖片,解釋的很好:

3、sklearn自帶方法joblib來(lái)進(jìn)行保存訓(xùn)練好的模型

from sklearn.externals import joblib
 
# 保存模型
joblib.dump(model, 'model.pickle')
#載入模型
model = joblib.load('model.pickle')

參考鏈接:

https://juejin.cn/post/6961934412518785054

https://juejin.cn/post/6844903513504530446

機(jī)器學(xué)習(xí)之邏輯回歸(純python實(shí)現(xiàn)) - 掘金 (juejin.cn)

機(jī)器學(xué)習(xí)筆記5-支持向量機(jī)1 - 掘金 (juejin.cn)

到此這篇關(guān)于python 數(shù)據(jù)挖掘算法的文章就介紹到這了,更多相關(guān)python 數(shù)據(jù)挖掘算法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python生成隨機(jī)圖形驗(yàn)證碼詳解

    python生成隨機(jī)圖形驗(yàn)證碼詳解

    這篇文章主要介紹了python生成隨機(jī)圖形驗(yàn)證碼詳解,具有一定參考價(jià)值,需要的朋友可以參閱。
    2017-11-11
  • 解決Jupyter notebook更換主題工具欄被隱藏及添加目錄生成插件問(wèn)題

    解決Jupyter notebook更換主題工具欄被隱藏及添加目錄生成插件問(wèn)題

    這篇文章主要介紹了解決Jupyter notebook更換主題工具欄被隱藏及添加目錄生成插件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • Python正則表達(dá)式re.compile()和re.findall()詳解

    Python正則表達(dá)式re.compile()和re.findall()詳解

    re?模塊提供了不少有用的函數(shù),用以匹配字符串,下面這篇文章主要給大家介紹了關(guān)于Python正則表達(dá)式re.compile()和re.findall()的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • Python實(shí)現(xiàn)對(duì)圖像加噪(高斯噪聲 椒鹽噪聲)

    Python實(shí)現(xiàn)對(duì)圖像加噪(高斯噪聲 椒鹽噪聲)

    這篇文章主要介紹了展示通過(guò)Python給圖像疊加不同等級(jí)的椒鹽噪聲和高斯噪聲的代碼,相應(yīng)的疊加噪聲的已編為對(duì)應(yīng)的類,可實(shí)例化使用。感興趣的同學(xué)可以看看
    2021-11-11
  • 使用Python解析Chrome瀏覽器書簽的示例

    使用Python解析Chrome瀏覽器書簽的示例

    這篇文章主要介紹了使用Python解析Chrome瀏覽器書簽的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-11-11
  • python with提前退出遇到的坑與解決方案

    python with提前退出遇到的坑與解決方案

    這篇文章主要介紹了python with提前退出遇到的坑與解決方法,需要的朋友參考下吧
    2018-01-01
  • 打包遷移Python?env環(huán)境的三種方法總結(jié)

    打包遷移Python?env環(huán)境的三種方法總結(jié)

    平常工作中可能遇到python虛擬環(huán)境遷移的場(chǎng)景,總結(jié)了如下幾個(gè)方法,下面這篇文章主要給大家介紹了關(guān)于打包遷移Python?env環(huán)境的三種方法,需要的朋友可以參考下
    2024-08-08
  • 一文帶你了解Python協(xié)程的詳細(xì)解釋以及例子

    一文帶你了解Python協(xié)程的詳細(xì)解釋以及例子

    協(xié)程不是計(jì)算機(jī)提供的,計(jì)算機(jī)只提供:進(jìn)程、線程。協(xié)程是人工創(chuàng)造的一種用戶態(tài)切換的微進(jìn)程,使用一個(gè)線程去來(lái)回切換多個(gè)進(jìn)程,本文就來(lái)通過(guò)一些示例和大家詳細(xì)聊聊Python中的協(xié)程吧
    2023-03-03
  • python使用pyshark庫(kù)捕獲數(shù)據(jù)包的示例詳解

    python使用pyshark庫(kù)捕獲數(shù)據(jù)包的示例詳解

    PyShark是一個(gè)基于Python的網(wǎng)絡(luò)數(shù)據(jù)包分析工具庫(kù),它允許用戶捕獲、解碼和分析實(shí)時(shí)網(wǎng)絡(luò)流量,特別是Wi-Fi和TCP/IP協(xié)議的數(shù)據(jù),所以本文給大家介紹了python使用pyshark庫(kù)捕獲數(shù)據(jù)包的示例,需要的朋友可以參考下
    2024-08-08
  • Python?Behave框架學(xué)習(xí)

    Python?Behave框架學(xué)習(xí)

    behave是python語(yǔ)言的行為驅(qū)動(dòng)開發(fā),全稱:Behavior-driven?development,簡(jiǎn)稱BDD,它是一種敏捷軟件開發(fā)技術(shù),它鼓勵(lì)軟件項(xiàng)目中的開發(fā)人員、QA和非技術(shù)或業(yè)務(wù)參與者之間進(jìn)行協(xié)作,本文給大家介紹Python?Behave框架,感興趣的朋友一起看看吧
    2022-07-07

最新評(píng)論

沁阳市| 隆林| 壶关县| 会同县| 金昌市| 兴化市| 静乐县| 新绛县| 乐安县| 丰原市| 平谷区| 和静县| 清水县| 黄冈市| 同德县| 中牟县| 咸阳市| 仪征市| 沛县| 柳林县| 阳江市| 平凉市| 清新县| 大荔县| 西乌珠穆沁旗| 新乐市| 灌阳县| 菏泽市| 浦东新区| 肇源县| 东源县| 喀喇沁旗| 旬阳县| 嘉兴市| 利川市| 湘乡市| 上思县| 措美县| 交口县| 离岛区| 永川市|