




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
實訓7電影數據可視化項目背景實訓目標技術準備實訓任務實訓步驟目錄項目背景當今,人們的生活需求越來越高,電影在經濟發展中起到了不可忽視的作用,利用已有的數據分析出人們對電影的需求,能夠更好的提高電影事業的進一步發展。本章節的目的主要是利用已有的每天電影播放情況、票房數據等信息進行分析,使用可視化的形式進行分析,主要目的分析電影中哪些電影的播放次數較多,哪些電影的總票房較高以及電影趨勢信息等,并使用各類圖表進行展示。實訓目標掌握日期數據的處理;掌握可視化圖表的使用;掌握詞云圖的簡單應用。技術準備詞云圖詞云圖可以把帶權重的關鍵詞渲染成詞云,下面介紹用wrodcloud模塊來生成詞云。安裝:打開AnacondaPrompt,選擇開始菜單-->Anaconda3-->AnacondaPrompt。直接使用pipinstallwordcloud進行包的安裝。技術準備WordCloud的使用介紹Wordcloud的方法及用法描述方法用法描述W.generate(text)WordCloud對象w中加載文本text如w.generate(text)W.to_file(filename)將詞云輸出為圖像文件,.png或.jpg格式w.to_file(“filename.jpg”)技術準備參數及其用法描述參數用法描述Width指定WordCloud對象生成圖片的寬度,默認400像素Height指定WordCloud對象生成圖片的高度,默認200像素Min_font_size指定詞云中字體最小字號,默認4號Max_font_size指定詞云中字體最大字號,根據高度調節Font_step指定詞云中字體字號的步進間隔,默認為1Font_path指定詞云文件路徑,默認NoneMax_words指定詞云顯示的最大單詞數量,默認200stop_words指定詞云的排除詞列表,即不顯示的單詞列表Mask指定詞云形狀,默認為長方形,需要引入imread()函數Background_color指定詞云圖片的背景顏色,默認為黑色實訓任務(1)電影的總場次高低可視化;(2)電影的總票房高低可視化;(3)數據的票房趨勢可視化;(4)使用詞云圖分析熱播電影。任務步驟見參考文檔感謝聆聽實訓8人力資源數據挖掘項目背景實訓目標實訓任務技術準備實訓步驟分析報告目錄項目背景在前面的章節中我們已經對本章節的數據進行了介紹和預處理以及數據可視化分析,本章節主要使用機器學習的相關知識分析各個因素之間的關系以及導致員工離職的主要原因有哪些,針對離職原因和公司的發展情況做出更好的調整。實訓目標掌握數據挖掘相關概述;掌握數據挖掘相關Scikit-learn工具包的安裝和使用;掌握數據挖掘中的決策樹方法理論基礎;掌握數據挖掘中算法的準確性判斷;掌握數據挖掘項目流程;掌握數據挖掘中的相關性分析使用和分析;掌握數據挖掘中的決策樹方法使用和分析;掌握決策樹方法的分析和拓展應用。實訓任務(1)數據挖掘的概念理解和認識;(2)決策樹方法理論基礎;(3)數據挖掘中sklearn包的簡單使用;(4)決策樹算法的應用和準確性判斷;(5)決策樹方法分析應用和拓展。技術準備數據挖掘概述;Scikit-learn簡介;決策樹方法理論基礎;算法的準確性判斷;項目流程(Crisp-DM框架)。技術準備什么是數據挖掘?(從大量的數據中通過算法搜索隱藏于其中信息的過程。)數據挖掘能做什么?(挖掘信息)怎么做?技術準備Scikit-learn工具包直接pip安裝:pipinstallsklearn(anaconda中已集成)從sklean中導入包fromsklearnimport…API文檔(參考):/stable/modules/classes.htmlScikit-learn工具包MachineLearninginPython開源機器學習庫:/stable/index.html涵蓋分類、回歸、聚類、降維、模型選擇、數據預處理六大模塊Scikit-learn工具包Scikit-learn工具包Scikit-learn工具包劃分數據集調用sklearn包中的train_test_split()函數實現訓練集和測試集的劃分。實例:train_X,test_X,train_Y,test_Y=train_test_split(train_data,train_target,test_size,random_state,stratify=y_train)train_test_split()函數
參數說明如下:train_data:被劃分的樣本特征集,比如X;train_target:被劃分的樣本標簽,比如Y。Scikit-learn工具包test_size:取值范圍為0-1,表示樣本比例;如果是整數即樣本的數量。random_state:是隨機數的種子,默認為None①若為None時,每次生成的數據都是隨機,可能不一樣②若為整數時,每次生成的數據都相同stratify:可以為類似數組或None①若為None時,劃分出來的測試集或訓練集中,其類標簽的比例也是隨機②若不為None時,劃分出來的測試集或訓練集中,其類標簽的比例同輸入的數組中類標簽的比例相同,可以用于處理不均衡的數據集決策樹算法簡介介紹:ID3算法是一個眾所周之的決策樹算法,該算法是澳大利亞悉尼大學的RossQuinlan于1986年提出,也是國際上最早、最有影響力的決策樹算法,其他的許多算法如C4.5、CART算法等都是在ID3算法基礎上的改進。決策樹算法ID3(J.RossQuinlan-1975)核心:信息熵
(信息增益算法)C4.5—ID3的改進核心:信息增益比CART(Breiman-1984)核心:基尼指數經典決策樹算法第一部分ID3(J.RossQuinlan-1975)核心:信息熵
(信息增益算法)實例
實例目的是通過天氣、溫度、濕度、風力四個因素來決定是否去打球,利用ID3算法判斷這四個因素的重要性,構建出決策樹模型,從而判斷能夠去打球。實驗數據集如表1所示。實例數據集表1實例數據集
Number天氣溫度濕度風力Play1晴朗高高弱No2晴朗高高強No3多云高高弱Yes4雨天適中高弱Yes5雨天冷正常弱Yes6雨天冷正常強No7多云冷正常強Yes8晴朗適中高弱No9晴朗冷正常弱Yes10雨天適中正常弱Yes11晴朗適中正常強Yes12多云適中高強Yes13多云高正常弱Yes14雨天適中高強NoID3算法在ID3算法中,決策節點屬性的選擇運用了信息論中的熵概念作為啟發式函數。在這種屬性選擇方法中,選擇具有最大信息增益(informationgain)的屬性作為當前劃分節點。通過這種方式選擇的節點屬性可以保證決策樹具有最小的分枝數量,使得到的決策樹冗余最小。ID3算法----熵
熵和概率圖
ID3算法----條件熵條件熵H(Y|X)表示在已知隨機變量X的條件下隨機變量Y的不確定性即隨機變量X給定的條件下隨機變量Y的條件熵。ID3算法----信息增益特征A對訓練數據集D的信息增益gain(D,A),定義為集合D的經驗熵H(D)與特征A給定條件下D的經驗條件熵H(D|A)之差。信息增益的算法步驟
實例
假如你是一個網球愛好者,天氣狀況(天氣、溫度、濕度、風力)是你決定是否去打球的重要因素,利用ID3算法構筑決策樹。實驗數據集如表1所示。實例數據集表1實例數據集
Number天氣溫度濕度風力Play1晴朗高高弱No2晴朗高高強No3多云高高弱Yes4雨天適中高弱Yes5雨天冷正常弱Yes6雨天冷正常強No7多云冷正常強Yes8晴朗適中高弱No9晴朗冷正常弱Yes10雨天適中正常弱Yes11晴朗適中正常強Yes12多云適中高強Yes13多云高正常弱Yes14雨天適中高強No實例以往部分打球數據庫類標記的訓練元組統計如表2所示。表2以往部分打球數據庫類標記的訓練元組統計
天氣溫度濕度風力打球晴朗多云雨天高溫溫和涼爽高正常弱強是(9)2432436663否(5)3022211223實例
實例
表2以往部分打球數據庫類標記的訓練元組統計
天氣溫度濕度風力打球晴朗多云雨天高溫溫和涼爽高正常弱強是(9)2432436663否(5)3022211223條件熵:
實例根據公式計算按照天氣屬性劃分的信息增益是:Gain(天氣)=info(D)-info天氣(D)=0.940-0.694
=0.246類似地,可以計算Gain(溫度)=0.029Gain(濕度)=0.151Gain(風力)=0.048實例由于天氣在屬性中具有最高信息增益,它被選作測試屬性。創建一個節點,用天氣標記,并根據每個屬性值,引出一個分支。注意,落在分區天氣="多云”的樣本都屬于同一類,根據算法,要在該分支的端點創建一個樹葉,并用“是”標記。同理,在“晴朗”和“雨天”這兩個分支上,分別對“溫度”、“濕度”、“風力”屬性計算其信息增益,分別選取一下個測試屬性。實例數據集依算法全部計算后返回的最終決策樹如圖所示。訓練決策樹的過程就是構建決策樹的過程。經典決策樹算法第二部分C4.5—ID3的改進核心:信息增益比C4.5算法簡介C4.5算法是ID3算法的一種延伸和優化。C4.5算法對ID3算法做了幾點改進:??通過信息增益率選擇分裂屬性,克服了ID3算法中通過信息增益傾向于選擇擁有多個屬性值的屬性作為分裂屬性的不足;能夠處理離散型和連續型的屬性類型,即將連續型的屬性進行離散化處理;構造決策樹之后進行剪枝操作;能夠處理具有缺失屬性值的訓練數據。信息增益比的使用原因信息增益值的大小是相對于訓練數據集而言的,即訓練數據集的經驗熵越大的時候,信息增益值會偏大,使用信息增益比即可解決此問題。使用信息增益比即可解決此問題。信息增益比計算信息增益比:特征A對訓練數據集D的信息增益比gr(D,A)定義為其信息增益g(D,A)與訓練數據集D的經驗熵H(D)之比:
經典決策樹算法第三部分CART(Breiman-1984)核心:基尼指數剪枝剪枝一般分兩種方法:先剪枝后剪枝決策樹的基本模型步驟1、導入決策樹模型fromsklearn.treeimportDecisionTreeClassifier2、利用模型構建決策樹clf=DecisionTreeClassifier(criterion='gini',splitter='best',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)決策樹的基本模型步驟DecisionTreeClassifier類常用的參數及其說明如下表所示。參數名稱說明criterion接收str。表示節點(特征)選擇的準則,使用信息增益“entropy”的是C4.5算法;使用基尼系數“gini”的CART算法。默認為“gini”splitter接收str,可選參數為“best”或“random”。表示特征劃分點選擇標準,“best”在特征的所有劃分點中找出最優的劃分點;“random”在隨機的部分劃分點中找出局部最優劃分點。默認為“best”max_depth接收int。表示決策樹的最大深度。默認為Nonemin_samples_split接收int或float。表示子數據集再切分需要的最小樣本量。默認為2min_samples_leaf接收int或float。表示葉節點所需的最小樣本數,若低于設定值,則該葉節點和其兄弟節點都會被剪枝。默認為1min_weight_fraction_leaf接收int、float、str或None。表示在葉節點處的所有輸入樣本權重總和的最小加權分數。默認為None決策樹的基本模型步驟DecisionTreeClassifier類常用的參數及其說明如下表所示。參數名稱說明max_features接收float。表示特征切分時考慮的最大特征數量,默認是對所有特征進行切分。傳入int類型的值,表示具體的特征個數;浮點數表示特征個數的百分比;sqrt表示總特征數的平方根;log2表示總特征數求log2后的個數的特征。默認為Nonerandom_state接收int、RandomState實例或None。表示隨機種子的數量,若設置了隨機種子,則最后的準確率都是一樣的;若接收int,則指定隨機數生成器的種子;若接收RandomState,則指定隨機數生成器;若為None,則指定使用默認的隨機數生成器。默認為Nonemax_leaf_nodes接收int或None。表示最大葉節點數。默認為None,即無限制決策樹的基本模型步驟DecisionTreeClassifier類常用的參數及其說明如下表所示。參數名稱說明min_impurity_decrease接收float。表示切分點不純度最小減少的程度,若某節點的不純度減少小于或等于這個值,則切分點就會被移除。默認為0.0min_impurity_split接收float。表示切分點最小不純度,它用來限制數據集的繼續切分(決策樹的生成)。若某個節點的不純度(分類錯誤率)小于這個閾值,則該點的數據將不再進行切分。無默認,但該參數將被移除,可使用min_impurity_decrease參數代替class_weight接收dict、dict列表、balanced或None。表示分類模型中各種類別的權重,在出現樣本不平衡時,可以考慮調整class_weight系數去調整,防止算法對訓練樣本多的類別偏倚。默認為Nonepresort接收bool。表示是否提前對特征進行排序。默認為False決策樹的基本模型步驟3、調用模型對象中的fit()方法,對數據進行擬合訓練model=model.fit(X_train,y_train)model4、調用模型中的score()方法,考察訓練效果,訓練集上的準確率判斷rv=model.score(X_train,y_train)rv=model.score(X_test,y_test)決策樹的基本模型步驟5、調用模型中的predict()方法,對測試樣本進行預測,獲得預測結果。y_train_pred=model.predict(X_train)y_test_pred=model.predict(X_test)判斷模型準確的的機器學習相關包:#導入相關的數據包fromsklearn.metricsimportconfusion_matrixfromsklearn.metricsimportaccuracy_score,precision_score,recall_score混合矩陣混淆矩陣算法的準確性判斷機器學習中,對于二分類問題常用的評價指標有正確率、錯誤率、精確率、召回率、F1度量、預測概率和ROC曲線等。下面我們以二分類(0,1)問題為例,觀察值來自不同的兩個類別(positive、negative),下面以正類和負類為例。對于二分類問題,存在以下四種情形:TP:實際樣本為正例,預測結果為正例,將正類預測為正類數;FN:實際樣本為正例,預測結果為負例,將正類預測為負類數;FP:實際樣本為負例,預測結果為正例,將負類預測為正類數;TN:實際樣本為負例,預測結果為負例,將負類預測為負類數;算法的準確性判斷正確率和錯誤率正確率(accuracy)和錯誤率(error)是分類任務中最常用的兩種性能度量,正確率是指分類正確的樣本占總樣本的比例,錯誤率是指分類錯誤的樣本占總樣本的比例。Accuracy:
正確率(準確率)
所有樣本中,預測正確的概率Accuracy=(TP+TN)/(P+N)Error:錯誤率
所有樣本中,預測錯誤的概率Error=(FP+FN)/(P+N)算法的準確性判斷精確率、召回率Precision:精確率
精準率是否誤報,在預測為真的樣例中,實際為真的概率:Precision=TP/(TP+FP)Recall:召回率檢測是否漏報,在實際為真的樣例中,預測為真的概率:Recall=TP/(TP+FN)算法的準確性判斷F1度量針對不同情況下精確率和召回率的重要性不同,使用F1度量將精確率和召回率度量綜合起來(F1度量是精確率和召回率的調和均值):F1=(2*Precision*Recall)/(Precision+Recall)決策樹的基本模型步驟6、調用模型中的predict_proba()方法,對測試樣本的概率進行預測,獲得預測結果的概率。y_pred_proba=model.predict_proba(X_test)SHAP介紹SHAP(SHapleyAdditiveexPlanation)是Python開發的一個"模型解釋"包,可以解釋任何機器學習模型的輸出。(查看特征的重要性)通過pipinstallshap即可安裝:導入shap機器學習可解釋性分析工具包,使用shap.initjs()初始化繪圖環境,即js環境:importshapshap.initjs()SHAP使用計算測試集每個樣本的每個特征對兩類預測結果的shap值:explainer=shap.TreeExplainer(model)shap_values=explainer.shap_values(X_test)特征重要性分析:對于某個特征,計算測試集每個員工的該特征shap值之和(shap值越高,特征越重要)shap.summary_plot(shap_values[1],X_test,plot_type="bar")shap.summary_plot(shap_values[1],X_test)shap.summary_plot(shap_values[1],X_test,plot_type="violin")SHAP使用特征重要性可視化shap.summary_plot(shap_values[1],X_test,plot_type="bar")SHAP使用SHAP庫可用的explainers有:linear:適用于特征獨立不相關的線性模型tree:適用于樹模型和基于樹模型的集成算法deep:用于計算深度學習模型,基于DeepLIFT算法gradient:用于深度學習模型,綜合了SHAP、集成梯度、和SmoothGrad等思想,形成單一期望值方程kernel:模型無關,適用于任何模型KernelExplainer:模型無關方法(解釋任意模型)適用于任何模型,但性能不一定是最優的,可能很慢;例如KNN算法只能使用kernelexplainer模型部署1、已經訓練好的模型(model)2、設置想要將模型保存的路徑model_path="HR_tree.pkl"3、保存模型joblib.dump(model,model_path)4、加載已保存的模型load_model=joblib.load(model_path)5、使用模型進行測試load_model使用項目流程在進行具體商業數據挖掘任務遵循Crisp-DM框架。即數據挖掘過程大概是有六個階段:業務理解、數據理解、數據準備、建模、評價、部署。實訓步驟見參考文檔項目總結本實驗通過決策樹算法對人力資源數據中的各因素相關性進行了分析,同時對離職情況進行了分析,將數據分成訓練測試集數據和標簽以及測試數據集數據和標簽,使用訓練數據集在決策樹算法上訓練模型,在測試數據集上判斷模型的好壞,對模型影響較大的因素的順序分別是satisfaction_level、time_spend_company、last_evaluation、number_project、average_montly_hours,最后對模型進行可視化并將模型進行部署保存備后續使用。拓展(1)iris數據集上使用決策樹算法進行挖掘分析。(2)使用本章節數據使用隨機森林算法進行挖掘分析。感謝聆聽實訓9健康數據挖掘項目背景實訓目標實訓任務技術準備實訓步驟目錄項目背景隨著生活質量的提高,人們越來越關注自身的健康問題,健康數據是隨著近幾年數字浪潮和信息現代化而出現的新名詞,是指無法在可承受的時間范圍內用常規軟件工具進行捕捉、管理和處理的健康數據的集合,是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力的海量、高增長率和多樣化的信息資產。健康大數據的整合再利用對于身體狀況監測,疾病預防和健康趨勢分析都具有積極的意義。實訓目標理解健康數據分析的意義;掌握項目流程;掌握數據挖掘的基本方法;掌握不同方法的具體使用;掌握實驗結果對比分析;掌握算法之間的優劣。實訓任務(1)進一步掌握項目流程(Crisp-DM框架)并應用到健康數據挖掘中;(2)對K近鄰、邏輯回歸、支持向量機、神經網絡、決策樹、隨機森林、Adaboost、樸素貝葉斯種算法應用到健康數據中實踐;(3)對多種算法的實驗結果進行對比和分析。技術準備監督學習半監督學習無監督學習有特征
有標簽即有標準答案有特征
部分標簽訓練部分有標準答案有特征,無標簽即無標準答案分類回歸分類回歸聚類聚類技術準備由于數據挖掘的應用領域十分廣泛,因此產生了多種數據挖掘的算法和方法。對于某一數據集很有效的算法,對另一數據集卻有可能完全無效。因此,要針對具體的挖掘目標和應用對象設計不同的算法。技術準備本章節主要采用的是分類。使用以下八種算法進行實驗:K近鄰、邏輯回歸、支持向量機、神經網絡、決策樹、隨機森林、Adaboost、樸素貝葉斯算法K近鄰算法K-近鄰(k-NearestNeighbor,KNN)算法是一種基本分類方法。最簡單最初級的分類器是將全部的訓練數據所對應的類別都記錄下來,當測試對象的屬性和某個訓練對象的屬性完全匹配時,便可以對其進行分類。但測試對象與訓練對象的完全匹配是不現實的,一個訓練對象可能被分到多個類中,由此誕生了K-近鄰算法。它是通過測量不同特征值之間的距離進行分類,如果一個樣本在特征空間中的k個最相似(即特征空間中最鄰近)的樣本中的大多數屬于某一個類別,則該樣本也屬于這個類別,其中K通常是不大于20的整數。K近鄰算法K-近鄰算法的基本思路是:選擇未知樣本在一定范圍內確定個數的K個樣本,該K個樣本大多數屬于某一類型,則未知樣本九被判定為該類型。K近鄰算法1、導入K近鄰算法模塊fromsklearn.neighborsimportKNeighborsClassifier2、建模model=KNeighborsClassifier()KNeighborsClassifier(n_neighbors=5,weights='uniform',algorithm='auto',leaf_size=30,p=2,metric=’minkowski’,metric_params=None,n_jobs=1)K近鄰算法KNeighborsClassifier類常用的參數及其說明如下表所示。參數名稱說明n_neighbors接收int。表示“鄰居”數。默認為5weights接收str。表示分類判斷時最近鄰的權重,可選參數為uniform和distance,uniform表示權重相等,distance表示按距離的倒數賦予權重。默認為uniformalgorithm接收str。表示分類時采取的算法,可選參數為auto、ball_tree、kd_tree和brute,一般選擇auto自動選擇最優的算法。默認為autometric接收str。表示距離度量。默認為minkowskip接收int。表示距離度量公式,p=1表示曼哈頓距離,p=2表示歐式距離。默認為2n_jobs接收int。表示計算時使用的核數。默認為1K近鄰算法3、調用模型對象中的fit()方法,對數據進行擬合訓練model=model.fit(X_train,y_train)model4、調用模型中的score()方法,考察訓練效果,訓練集上的準確率判斷rv=model.score(X_train,y_train)rvK近鄰算法5、調用模型中的predict()方法,對測試樣本進行預測,獲得預測結果。y_test_pred=model.predict(X_test)判斷模型準確的的機器學習相關包:#導入相關的數據包fromsklearn.metricsimportconfusion_matrix,classification_reportfromsklearn.metricsimportaccuracy_score,precision_score,recall_scoreK近鄰算法6、調用模型中的predict_proba()方法,對測試樣本的概率進行預測,獲得預測結果的概率。y_pred_proba=model.predict_proba(X_train)K近鄰算法優點:簡單易懂缺點:計算量太大邏輯回歸算法本質是分類算法邏輯回歸一般指logistic回歸(logistic回歸分析),常用于數據挖掘,疾病自動診斷,經濟預測等領域。例如,探討引發疾病的危險因素,并根據危險因素預測疾病發生的概率等。邏輯回歸算法Sigmoid函數公式:g(z)=1/(1+e-z)自變量取值為任意實數,值域[0,1]解釋:將任意的輸入值映射到[0,1]區間通過對原始數據的處理可以得到一個值,將該值映射到Sigmoid函數中,就完成了由值到概率的轉換,也就是分類任務。邏輯回歸算法1、導入邏輯回歸模塊fromsklearn.linear_modelimportLogisticRegression2、建模對象(邏輯回歸建模)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)邏輯回歸算法LogisticRegression類常用的參數及其說明如下表所示。參數名稱說明penalty接收str。表示正則化選擇參數,可選l1或l2。默認為l2solver接收str。表示優化算法選擇參數,可選參數為newton-cg,lbfg,liblinear,sag,當penalty='l2'時,4種都可選;當penalty='l1'時,只能選liblinear。默認liblinearmulti_class接收str。表示分類方式選擇參數,可選ovr和multinomial。默認ovrclass_weight接收balanced以及字典,表示類型權重參數,如對于0,1的二元模型,可以定義class_weight={0:0.9,1:0.1},這樣類型0的權重為90%,而類型1的權重為10%。默認Nonecopy_X接收bool。表示是否復制數據表進行運算。默認Truen_jobs接收int。表示計算時使用的核數。默認為1邏輯回歸算法3、調用模型對象中的fit()方法,對數據進行擬合訓練model=model.fit(X_train,y_train)model4、調用模型中的score()方法,考察訓練效果,訓練集上的準確率判斷rv=model.score(X_train,y_train)rv邏輯回歸算法5、調用模型中的predict()方法,對測試樣本進行預測,獲得預測結果。y_test_pred=model.predict(X_test)判斷模型準確的的機器學習相關包:#導入相關的數據包fromsklearn.metricsimportconfusion_matrix,classification_reportfromsklearn.metricsimportaccuracy_score,precision_score,recall_score邏輯回歸算法6、調用模型中的predict_proba()方法,對測試樣本的概率進行預測,獲得預測結果的概率。y_pred_proba=model.predict_proba(X_test)邏輯回歸算法邏輯回歸的優點1)預測結果是介于0和1之間的概率;2)可以適用于連續性和類別性自變量;3)容易使用和解釋。邏輯回歸算法邏輯回歸的缺點:1)對模型中自變量多重共線性較為敏感,例如兩個高度相關自變量同時放入模型,可能導致較弱的一個自變量回歸符號不符合預期,符號被扭轉。需要利用因子分析或者變量聚類分析等手段來選擇代表性的自變量,以減少候選變量之間的相關性;2)預測結果呈“S”型,因此從log(odds)向概率轉化的過程是非線性的,在兩端隨著log(odds)值的變化,概率變化很小,邊際值太小,而中間概率的變化很大,很敏感。導致很多區間的變量變化對目標概率的影響沒有區分度,無法確定閥值。支持向量機算法支持向量機(SupportVectorMachine,SVM)是用來解決二分類問題的有監督學習算法,它的基本模型是在特征空間上找到最佳的分離超平面使得訓練集上正負樣本間隔最大,在引入了核方法之后,SVM也可以用來解決非線性問題。SVC、NuSVC、linearSVC都能夠實現多元分類,其中SVC與NuSVC比較相似,但兩者參數略有不同,而LinearSVC如其名字所示,僅支持線性核函數的分類。支持向量機算法支持向量機目的:找到一條線將樣本分類w1x+w2y+b=0向量化:[w1
w2][xy]T+b=02維擴展到n維[w1
wn][x1xn]T+b=0即WTx+b=0支持向量機算法1、導入支持向量機模塊fromsklearn.svmimportSVC2、建模
model=SVC(C=1.0,kernel=’rbf’,degree=3,gamma=’auto’,coef0=0.0,shrinking=True,probability=False,tol=0.001,cache_size=200,class_weight=None,verbose=False,max_iter=-1,decision_function_shape=’ovr’,random_state=None)其中核函數可以選擇線性核函數、多項式核函數、高斯核函數、sigmoid核,分別用linear、poly、rbf、sigmoid表示,默認情況下選擇高斯核函數。支持向量機算法SVC類常用的參數及其說明如表所示。參數名稱說明C接收int或float。表示對誤分類的懲罰參數。默認為1.0kernel接收str。表示核函數,可選參數為linear、poly、rbf、sigmoid、precomputed。默認為rbfdegree接收int。表示多項式核函數poly的維度。默認為3gamma接收str。表示rbf、poly、sigmoid核函數的參數,若是auto,則自動設置參數。默認為autocoef0接收int或float。表示核函數的常數項,對poly和sigmoid有效,默認為0.0tol接收float。表示停止訓練的誤差大小。默認為0.001max_iter接受int。表示最大迭代次數,-1表示無限制。默認為-1支持向量機算法3、調用模型對象中的fit()方法,對數據進行擬合訓練model=model.fit(X_train,y_train)model4、調用模型中的score()方法,考察訓練效果,訓練集上的準確率判斷rv=model.score(X_train,y_train)rv支持向量機算法5、調用模型中的predict()方法,對測試樣本進行預測,獲得預測結果。y_test_pred=model.predict(X_test)判斷模型準確的的機器學習相關包:#導入相關的數據包fromsklearn.metricsimportconfusion_matrix,classification_reportfromsklearn.metricsimportaccuracy_score,precision_score,recall_score支持向量機算法6、調用模型中的predict_proba()方法,對測試樣本的概率進行預測,獲得預測結果的概率。y_pred_proba=model.predict_proba(X_train)支持向量機算法優點:1.由于SVM是一個凸優化問題,所以求得的解一定是全局最優而不是局部最優。2.不僅適用于線性線性問題還適用于非線性問題(用核技巧)。3.擁有高維樣本空間的數據也能用SVM,這是因為數據集的復雜度只取決于支持向量而不是數據集的維度,這在某種意義上避免了“維數災難”。4.理論基礎比較完善(例如神經網絡就更像一個黑盒子)。支持向量機算法缺點:1.二次規劃問題求解將涉及m階矩陣的計算(m為樣本的個數),因此SVM不適用于超大數據集。(SMO算法可以緩解這個問題)2.只適用于二分類問題。(SVM的推廣SVR也適用于回歸問題;可以通過多個SVM的組合來解決多分類問題)神經網絡算法神經網絡(NeuralNetworks)能在外界信息的基礎上改變內部結構,是一個具備學習功能的自適應系統。神經網絡算法輸入原始數據信息通過迭代學習算法,對參數進行更新估計,使得模型的輸出逼近于樣本真實結果的過程。神經網絡算法BP神經網絡算法流程如下:1、在(0,1)范圍內隨機初始化網絡中所有權值和閾值。2、將訓練樣本提供給輸入層神經元,然后逐層將信號前傳,直到產生輸出層的結果,這一步一般稱為信號向前傳播。3、根據
計算輸出層誤差,將誤差逆向傳播至隱層神經元,再根據隱層神經元誤差來對權值和閾值進行更新,這一步一般稱為誤差向后傳播。4、循環執行步驟2和步驟3,直到達到某個停止條件,一般為訓練誤差小于某個閾值或迭代次數大于某個閾值。神經網絡算法1、導入神經網絡分類模塊fromsklearn.neural_networkimportMLPClassifier2、建模對象model=MLPClassifier(hidden_layer_sizes=(100,),activation=’relu’,solver=’adam’,alpha=0.0001,batch_size=’auto’,learning_rate=’constant’,learning_rate_init=0.001,power_t=0.5,max_iter=200,shuffle=True,random_state=None,tol=0.0001,verbose=False,warm_start=False,momentum=0.9,nesterovs_momentum=True,early_stopping=False,validation_fraction=0.1,beta_1=0.9,beta_2=0.999,epsilon=1e-08,n_iter_no_change=10)神經網絡算法MLPClassifier類常用的參數及其說明如表所示。參數名稱說明hidden_layer_sizes接收tuple。表示隱層結構,其長度表示隱層層數,元素表示每一個隱層的神經元個數。如(80,90)表示包含兩個隱層,第一個隱層有80個神經元,第2個隱層有90個神經元。默認為(100,)activation接收str。表示激活函數,可選參數有以下4種。(1)identity:恒等函數,(2)logistics:Sigmooid函數,
(3)tanh:tanh函數,
(4)relu:relu函數,
默認為relu神經網絡算法MLPClassifier類常用的參數及其說明如表所示。參數名稱說明solver接收str。表示優化算法的類型,可選參數有以下3種(1)lbfgs:一種擬牛頓法(2)sgd:隨機梯度下降法(3)adam:基于隨機梯度的優化器,在大規模數據集上效果較好默認為adamalpha接收float。表示正則化系數。默認為0.0001max_iter接收int。表示最大迭代次數。默認為200tol接收float。表示優化過程的收斂性閾值。默認為0.0001神經網絡算法3、調用模型對象中的fit()方法,對數據進行擬合訓練model=model.fit(X_train,y_train)model4、調用模型中的score()方法,考察訓練效果,訓練集上的準確率判斷rv=model.score(X_train,y_train)rv神經網絡算法5、調用模型中的predict()方法,對測試樣本進行預測,獲得預測結果。y_test_pred=model.predict(X_test)判斷模型準確的的機器學習相關包:#導入相關的數據包fromsklearn.metricsimportconfusion_matrix,classification_reportfromsklearn.metricsimportaccuracy_score,precision_score,recall_score神經網絡算法6、調用模型中的predict_proba()方法,對測試樣本的概率進行預測,獲得預測結果的概率。y_pred_proba=model.predict_proba(X_train)決策樹算法決策樹是一個預測模型,代表的是對象屬性與對象值之間的一種映射關系。決策樹可分為分類樹和回歸樹,分類樹的輸出是樣本的類標,回歸樹的輸出是一個預測值。決策樹算法決策樹是一種基于樹結構來進行決策的分類算法。一般地,一棵決策樹包含一個根節點、若干個中間節點和若干個葉節點。根節點和中間節點對應于一個屬性測試,葉節點對應于決策結果。一般決策樹的結構示意圖如圖所示。決策樹算法1、導入決策樹模塊fromsklearn.treeimportDecisionTreeClassifier2、建模model=DecisionTreeClassifier()決策樹算法3、調用模型對象中的fit()方法,對數據進行擬合訓練model=model.fit(X_train,y_train)model4、調用模型中的score()方法,考察訓練效果,訓練集上的準確率判斷rv=model.score(X_train,y_train)rv決策樹算法5、調用模型中的predict()方法,對測試樣本進行預測,獲得預測結果。y_train_pred=clf.predict(X_train)y_test_pred=clf.predict(X_test)判斷模型準確的的機器學習相關包:#導入相關的數據包fromsklearn.metricsimportconfusion_matrix,classification_reportfromsklearn.metricsimportaccuracy_score,precision_score,recall_score決策樹算法6、調用模型中的predict_proba()方法,對測試樣本的概率進行預測,獲得預測結果的概率。y_pred_proba=clf.predict_proba(X_train)隨機森林算法在機器學習中,集成學習算法通過組合使用多種學習算法來獲得比單獨使用任何單獨的學習算法更好的預測性能。假設有個病人去醫院看病,希望根據醫生的診斷做出治療。他可能選擇看多個醫生,而不是一個;如果某種診斷比其他診斷出現的次數多,則將它作為最終的診斷結果。也就是說最終診斷結果是根據多數表決做出的,每個醫生都具有相同的權重。隨機森林算法把醫生換成分類器,就得到Bagging(Bootstrapaggregating)的思想,單個分類器稱為基分類器。多數分類器的結果比少數分類器的結果更可靠。隨機森林算法(RandomForest,RF)是Bagging的一個拓展,RF在以決策樹為基分類器構建Bagging學習器的基礎上,進一步在決策樹的訓練過程中引入了隨機屬性選擇。隨機森林除了擁有Bagging方法已有的優點外,還有更加重要的一點:由于隨機森林在每次劃分時只考慮很少的屬性,因此在大型數據上效率更高。隨機森林算法1、導入隨機森林模塊fromsklearn.ensembleimportRandomForestClassifier2、建模對象(隨機森林建模)model=RandomForestClassifier(n_estimators=10,criterion=’gini’,max_depth=None,min_samples_split=2,min_samples_leaf=1,min_weight_fraction_leaf=0.0,max_features=’auto’,max_leaf_nodes=None,min_impurity_decrease=0.0,min_impurity_split=None,bootstrap=True,oob_score=False,n_jobs=None,random_state=None,verbose=0,warm_start=False,class_weight=None)隨機森林算法RandomForestClassifier類常用的參數及其說明如表所示。參數名稱說明n_estimators接收int。表示隨機森林中決策樹數量。默認為10criterion接收str。表示決策樹進行屬性選擇時的評價標準,可選參數為gini、entropy。默認為ginimax_depth接收int或None。表示決策樹劃分時考慮的最大特征數。默認為Nonemin_samples_split接收int或float。表示內部結點最小的樣本數,若是float,則表示百分數。默認為2min_samples_leaf接收int或float。表示葉結點最小的樣本數,若是float,則表示百分數。默認為1max_leaf_nodes接受in-t或None。表示最大的葉結點數。默認為Noneclass_weight接受dict、list、balanced或None。以{class_label:weight}的形式表示類的權重。默認為None隨機森林算法3、調用模型對象中的fit()方法,對數據進行擬合訓練model=model.fit(X_train,y_train)model4、調用模型中的score()方法,考察訓練效果,訓練集上的準確率判斷rv=model.score(X_train,y_train)rv隨機森林算法5、調用模型中的predict()方法,對測試樣本進行預測,獲得預測結果。y_test_pred=model.predict(X_test)判斷模型準確的的機器學習相關包:#導入相關的數據包fromsklearn.metricsimportconfusion_matrix,classification_reportfromsklearn.metricsimportaccuracy_score,precision_score,recall_score隨機森林算法6、調用模型中的predict_proba()方法,對測試樣本的概率進行預測,獲得預測結果的概率。y_pred_proba=model.predict_proba(X_train)Adaboost算法Adaboost算法Adaboost是一種非常流行的提升算法Adaboost算法1、導入Adaboost模塊fromsklearn.ensembleimportAdaBoostClassifier2、建模對象(建模)model=AdaBoostClassifier()AdaBoostClassifier(base_estimator=None,n_estimators=50,learning_rate=1.0,algorithm='SAMME.R',random_state=None)Adaboost算法Adaboost常用的參數及其說明如表所示參數名稱說明base_estimator基分類器,默認是決策樹,在該分類器基礎上進行boosting,理論上可以是任一分類器,但是如果是其他分類器時需要指明樣本權重。n_estimators基分類器提升(循環)次數,默認是50次,這個值過大,模型容易過擬合;值過小,模型容易欠擬合。learning_rate學習率,表示梯度收斂速度,默認為1,如果過大,容易錯過最優值,如果過小,則收斂速度會很慢;該值需要和n_estimators進行一個權衡,當分類器迭代次數較少時,學習率可以小一些,當迭代次數較多時,學習率可以適當放大。algorithmboosting算法,也就是模型提升準則,有兩種方式SAMME,和SAMME.R兩種,默認是SAMME.R,兩者的區別主要是弱學習器權重的度量,前者是對樣本集預測錯誤的概率進行劃分的,后者是對樣本集的預測錯誤的比例,即錯分率進行劃分的,默認是用的SAMME.R。random_state隨機種子設置。Adaboost算法3、調用模型對象中的fit()方法,對數據進行擬合訓練model=model.fit(X_train,y_train)model4、調用模型中的score()方法,考察訓練效果,訓練集上
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論