<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
可以通過業務原始資料、公開的資料集、也可通過爬蟲的方式獲取。
資料極可能有噪音,不完整等缺陷,需要對資料進行資料標準化,方法有min-max 標準化,z-score 標準化,修正的標準z-score。
將資料提取特徵使這些資料符合特定資料探勘演演算法的分析模型。資料模型有很多,等下詳細講解。
選擇好的資料探勘演演算法對資料進行訓練
有兩種主流方法:
十折交叉驗證:將資料集隨機分割成十個等份,每次用9份資料做訓練集,1份資料做測試集,如此迭代10次。十折交叉驗證的關鍵在於較平均地分為10份。
N折交叉驗證又稱為留一法:用幾乎所有的資料進行訓練,然後留一個資料進行測試,並迭代每一資料測試。留一法的優點是:確定性。
使用訓練好的模型對資料進行預測。
對資料探勘後的資訊加以分析解釋,並應用於實際的工作領域。
1)線性迴歸:希望所有點都落在直線上,所有點離直線的距離最近。首先假設好y=ax+b中a和b的值,然後計算每個資料點到這條直線上的距離總和,目的是要使這個總和最小!
from sklearn.linear_model import LinearRegression # 定義線性迴歸模型 model = LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=1) """ 引數 --- fit_intercept:是否計算截距。False-模型沒有截距 normalize: 當fit_intercept設定為False時,該引數將被忽略。 如果為真,則迴歸前的迴歸係數X將通過減去平均值併除以l2-範數而歸一化。 n_jobs:指定執行緒數 """
2)邏輯迴歸:二分演演算法,用於兩分類問題。需要預測函數的“大概形式”, 比如是線性還是非線性的。
上面有提到,該資料集需要一個線性的邊界。 不同資料需要不同的邊界。
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) """引數 --- penalty:使用指定正則化項(預設:l2) dual: n_samples > n_features取False(預設) C:正則化強度的反,值越小正則化強度越大 n_jobs: 指定執行緒數 random_state:亂數生成器 fit_intercept: 是否需要常數 """
3)樸素貝葉斯演演算法NB:用於判斷某件事的發生概率,我就曾用此演演算法做過輿情分類器。將一些語句變為01二維矩陣,計算詞語的出現頻率,從而判斷語句的情感色彩是怎樣的。
效率很高,但存在一定的錯誤概率
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) """ 文字分類問題常用MultinomialNB 引數 --- alpha:平滑引數 fit_prior:是否要學習類的先驗概率;false-使用統一的先驗概率 class_prior: 是否指定類的先驗概率;若指定則不能根據引數調整 binarize: 二值化的閾值,若為None,則假設輸入由二進位制向量組成 """
4)決策樹DT:類似流程圖的樹結構,它使用分支方法來說明決策的每個可能結果。樹中的每個節點代表對特定變數的測試 - 每個分支都是該測試的結果。
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) """引數 --- criterion :特徵選擇準則gini/entropy max_depth:樹的最大深度,None-儘量下分 min_samples_split:分裂內部節點,所需要的最小樣本樹 min_samples_leaf:葉子節點所需要的最小樣本數 max_features: 尋找最優分割點時的最大特徵數 max_leaf_nodes:優先增長到最大葉子節點數 min_impurity_decrease:如果這種分離導致雜質的減少大於或等於這個值,則節點將被拆分。 """
5)支援向量機SVM:就是判斷線性可分不可分,能不能用直線分割兩類資料!理論可以推廣到三維,甚至思維以上的特徵空間。三維使用平面來分隔資料,四維和四維以上因為人類 無法直觀的感知出來,所以畫不出來,但是能分隔資料,存在這樣的平面叫做超平面。
from sklearn.svm import SVC model = SVC(C=1.0, kernel='rbf', gamma='auto') """引數 --- C:誤差項的懲罰引數C gamma: 核相關係數。浮點數,If gamma is ‘auto' then 1/n_features will be used instead. """
6)k近鄰演演算法KNN:採用測量不同特徵值之間距離的方法對資料進行分類的一個演演算法。
給定一個樣本的集合,這裡稱為訓練集,並且樣本中每個資料都包含標籤。對於新輸入的一個不包含標籤的資料,通過計算這個新的資料與每一個樣本之間的距離,選取前k個,通常k小於20,以k個劇裡最近的資料的標籤中出現次數最多的標籤作為該新加入的資料標籤。
K近鄰演演算法,即是給定一個訓練資料集,對新的輸入範例,在訓練資料集中找到與該範例最鄰近的K個範例,這K個範例的多數屬於某個類,就把該輸入範例分類到這個類中。(這就類似於現實生活中少數服從多數的思想)根據這個說法,咱們來看下引自維基百科上的一幅圖:
如果K=3,綠色圓點的最鄰近的3個點是2個紅色小三角形和1個藍色小正方形,少數從屬於多數,基於統計的方法,判定綠色的這個待分類點屬於紅色的三角形一類。
如果K=5,綠色圓點的最鄰近的5個鄰居是2個紅色三角形和3個藍色的正方形,還是少數從屬於多數,基於統計的方法,判定綠色的這個待分類點屬於藍色的正方形一類。
from sklearn import neighbors #定義kNN分類模型 model = neighbors.KNeighborsClassifier(n_neighbors=5, n_jobs=1) # 分類 model = neighbors.KNeighborsRegressor(n_neighbors=5, n_jobs=1) # 迴歸 """引數 --- n_neighbors: 使用鄰居的數目 n_jobs:並行任務數 """
7)K-均值聚類(K-means):
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) # 視覺化類聚結果 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-均值聚類屬於無監督學習。
監督學習知道從物件(資料)中學習什麼,而無監督學習無需知道所要搜尋的目標,它是根據演演算法得到資料的共同特徵。比如用分類和聚類來說,分類事先就知道所要得到的類別,而聚類則不一樣,只是以相似度為基礎,將物件分得不同的簇。
ps):我們在機器學習中一直會遇到兩種問題,一種是迴歸問題,一種是分類問題。我們從字面上理解,很容易知道分類問題其實是將我們現有的資料分成若干類,然後對於新的資料,我們根據所分得類而進行劃分;而回歸問題是將現有資料擬合成一條函數,根據所擬合的函數來預測新的資料。 這兩者的區別就在於輸出變數的型別。迴歸是定量輸出,或者說是預測連續變數;分類問題書定量輸出,預測離散變數。Po一張我在知乎上看到的一張圖片,解釋的很好:
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
機器學習之邏輯迴歸(純python實現) - 掘金 (juejin.cn)
機器學習筆記5-支援向量機1 - 掘金 (juejin.cn)
到此這篇關於python 資料探勘演演算法的文章就介紹到這了,更多相關python 資料探勘演演算法內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45