⑴ 如何用python在10分鍾內樹立一個預測模型
所謂預測模型我理解是機器學習的監督式演算法。 常用的有 K 近鄰, 決策樹, 樸素貝葉斯等。 舉例: 使用k近鄰演算法預測一個女的是不是美女: 我們抽取特徵值:
身高,體重,三圍等。 你先設置一些經驗數據,例如: A: 165CM 50KG, 23 32,31 美 B 150 60KG 23 23 23 丑 現在輸入 C 163 45 25 30 30 選擇K =3, 演算法會找經驗數據中和這個數據最接近的三個 值,判斷這三個對象是 美 還是丑。 如果2,3個美,則預測為美。否則為丑。
對應的python代碼在網上都有,估計20-30 行吧。 自己找找。
⑵ python輸出模型預測結果語句怎麼寫
result=model(data)
⑶ python如何繪制預測模型校準圖
python繪制預測模型校準圖可以使用校準曲線,因為預測一個模型校準的最簡單的方法是通過一個稱為「校準曲線」的圖(也稱為「可靠性圖」,reliability diagram)。
這個方法主要是將觀察到的結果通過概率劃分為幾類(bin)。因此,屬於同一類的觀測值具有相近的概率。
對於每個類,校準曲線將預測這個類的平均值,然後將預測概率的平均值與理論平均值(即觀察到的目標變數的平均值)進行比較。
你只需要確定類的數量和以下兩者之間的分類策略即可:
1、「uniform」,一個0-1的間隔被分為n_bins個類,它們都具有相同的寬度。
2、「quantile」,類的邊緣被定義,從而使得每個類都具有相同數量的觀測值。
假設你的模型具有良好的精度,則校準曲線將單調增加。但這並不意味著模型已被正確校準。實際上,只有在校準曲線非常接近等分線時(即下圖中的灰色虛線),您的模型才能得到很好的校準,因為這將意味著預測概率基本上接近理論概率。
python繪制預測模型中如何解決校準錯誤:
假設你已經訓練了一個分類器,該分類器會產生准確但未經校準的概率。概率校準的思想是建立第二個模型(稱為校準器),校準器模型能夠將你訓練的分類器「校準」為實際概率。
因此,校準包括了將一個一維矢量(未校準概率)轉換為另一個一維矢量(已校準概率)的功能。
兩種常被用作校準器的方法:
1、保序回歸:一種非參數演算法,這種非參數演算法將非遞減的自由格式行擬合到數據中。行不會減少這一事實是很重要的,因為它遵從原始排序。
2、邏輯回歸:現在有三種選擇來預測概率:普通隨機森林、隨機森林 + 保序回歸、隨機森林 + 邏輯回歸。
⑷ 如何用Python在10分鍾內建立一個預測模型
預測模型的分解過程
我總是集中於投入有質量的時間在建模的初始階段,比如,假設生成、頭腦風暴、討論或理解可能的結果范圍。所有這些活動都有助於我解決問題,並最終讓我設計出更強大的商業解決方案。為什麼你要在前面花費這段時間,這有充分的理由:
你有足夠的時間投入並且你是無經驗的(這是有影響的)
你不帶有其它數據觀點或想法的偏見(我總是建議,在深入研究數據之前做假設生成)
在後面的階段,你會急於完成該項目而沒有能力投入有質量的時間了。
這個階段需要投入高質量時間,因此我沒有提及時間表,不過我建議你把它作為標準的做法。這有助於你建立建立更好地預測模型,在後面的階段的只需較少的迭代工作。讓我們來看看建立第一個模型的剩餘階段的時間表:
數據描述性分析——50%的時間
數據預處理(缺失值和異常值修復)——40%的時間
數據建模——4%的時間
性能預測——6%的時間
讓我們一步一步完成每個過程(每一步投入預測的時間):
階段1:描述性分析/數據探索
在我剛開始成為數據科學家的時候,數據探索占據了我大量的時間。不過,隨著時間的推移,我已經把大量的數據操作自動化了。由於數據准備占據建立第一個模型工作量的50%,自動化的好處是顯而易見的。
這是我們的第一個基準模型,我們去掉任何特徵設計。因此,描述分析所需的時間僅限於了解缺失值和直接可見的大的特徵。在我的方法體系中,你將需要2分鍾來完成這一步(假設,100000個觀測數據集)。
我的第一個模型執行的操作:
確定ID,輸入特徵和目標特徵
確定分類和數值特徵
識別缺失值所在列
階段2:數據預處理(缺失值處理)
有許多方法可以解決這個問題。對於我們的第一個模型,我們將專注於智能和快速技術來建立第一個有效模型。
為缺失值創建假標志:有用,有時缺失值本身就攜帶了大量的信息。
用均值、中位數或其它簡單方法填補缺失值:均值和中位數填補都表現良好,大多數人喜歡用均值填補但是在有偏分布的情況下我建議使用中位數。其它智能的方法與均值和中位數填補類似,使用其它相關特徵填補或建立模型。比如,在Titanic生存挑戰中,你可以使用乘客名字的稱呼,比如:「Mr.」, 「Miss.」,」Mrs.」,」Master」,來填補年齡的缺失值,這對模型性能有很好的影響。
填補缺失的分類變數:創建一個新的等級來填補分類變數,讓所有的缺失值編碼為一個單一值比如,「New_Cat」,或者,你可以看看頻率組合,使用高頻率的分類變數來填補缺失值。
由於數據處理方法如此簡單,你可以只需要3到4分鍾來處理數據。
階段3:數據建模
根據不同的業務問題,我推薦使用GBM或RandomForest技術的任意一種。這兩個技術可以極其有效地創建基準解決方案。我已經看到數據科學家通常把這兩個方法作為他們的第一個模型同時也作為最後一個模型。這最多用去4到5分鍾。
階段4:性能預測
有各種各樣的方法可以驗證你的模型性能,我建議你將訓練數據集劃分為訓練集和驗證集(理想的比例是70:30)並且在70%的訓練數據集上建模。現在,使用30%的驗證數據集進行交叉驗證並使用評價指標進行性能評估。最後需要1到2分鍾執行和記錄結果。
本文的目的不是贏得比賽,而是建立我們自己的基準。讓我們用python代碼來執行上面的步驟,建立你的第一個有較高影響的模型。
讓我們開始付諸行動
首先我假設你已經做了所有的假設生成並且你擅長使用python的基本數據科學操作。我用一個數據科學挑戰的例子來說明。讓我們看一下結構:
步驟1:導入所需的庫,讀取測試和訓練數據集。
#導入pandas、numpy包,導入LabelEncoder、random、RandomForestClassifier、GradientBoostingClassifier函數
import pandas as pd
import numpy as np
fromsklearn.preprocessing import LabelEncoder
import random
fromsklearn.ensemble import RandomForestClassifier
from sklearn.ensembleimport GradientBoostingClassifier
#讀取訓練、測試數據集
train=pd.read_csv('C:/Users/AnalyticsVidhya/Desktop/challenge/Train.csv')
test=pd.read_csv('C:/Users/AnalyticsVidhya/Desktop/challenge/Test.csv')
#創建訓練、測試數據集標志
train='Train'
test='Test'
fullData =pd.concat(,axis=0) #聯合訓練、測試數據集
步驟2:該框架的第二步並不需要用到python,繼續下一步。
步驟3:查看數據集的列名或概要
fullData.columns # 顯示所有的列名稱
fullData.head(10) #顯示數據框的前10條記錄
fullData.describe() #你可以使用describe()函數查看數值域的概要
步驟4:確定a)ID變數 b)目標變數 c)分類變數 d)數值變數 e)其他變數。
ID_col =
target_col =
cat_cols =
num_cols= list(set(list(fullData.columns))-set(cat_cols)-set(ID_col)-set(target_col)-set(data_col))
other_col= #為訓練、測試數據集設置標識符
步驟5:識別缺失值變數並創建標志
fullData.isnull().any()#返回True或False,True意味著有缺失值而False相反
num_cat_cols = num_cols+cat_cols # 組合數值變數和分類變數
#為有缺失值的變數創建一個新的變數
# 對缺失值標志為1,否則為0
for var in num_cat_cols:
if fullData.isnull().any()=True:
fullData=fullData.isnull()*1
步驟6:填補缺失值
#用均值填補數值缺失值
fullData = fullData.fillna(fullData.mean(),inplace=True)
#用-9999填補分類變數缺失值
fullData = fullData.fillna(value = -9999)
步驟7:創建分類變數的標簽編碼器,將數據集分割成訓練和測試集,進一步,將訓練數據集分割成訓練集和測試集。
#創建分類特徵的標簽編碼器
for var in cat_cols:
number = LabelEncoder()
fullData = number.fit_transform(fullData.astype('str'))
#目標變數也是分類變數,所以也用標簽編碼器轉換
fullData = number.fit_transform(fullData.astype('str'))
train=fullData='Train']
test=fullData='Test']
train = np.random.uniform(0, 1, len(train)) <= .75
Train, Validate = train=True], train=False]
步驟8:將填補和虛假(缺失值標志)變數傳遞到模型中,我使用隨機森林來預測類。
features=list(set(list(fullData.columns))-set(ID_col)-set(target_col)-set(other_col))
x_train = Train.values
y_train = Train.values
x_validate = Validate.values
y_validate = Validate.values
x_test=test.values
random.seed(100)
rf = RandomForestClassifier(n_estimators=1000)
rf.fit(x_train, y_train)
步驟9:檢查性能做出預測
status = rf.predict_proba(x_validate)
fpr, tpr, _ = roc_curve(y_validate, status)
roc_auc = auc(fpr, tpr)
print roc_auc
final_status = rf.predict_proba(x_test)
test=final_status
test.to_csv('C:/Users/Analytics Vidhya/Desktop/model_output.csv',columns=)
現在可以提交了!
⑸ python svm 怎麼訓練模型
支持向量機SVM(Support Vector Machine)是有監督的分類預測模型,本篇文章使用機器學習庫scikit-learn中的手寫數字數據集介紹使用Python對SVM模型進行訓練並對手寫數字進行識別的過程。
准備工作
手寫數字識別的原理是將數字的圖片分割為8X8的灰度值矩陣,將這64個灰度值作為每個數字的訓練集對模型進行訓練。手寫數字所對應的真實數字作為分類結果。在機器學習sklearn庫中已經包含了不同數字的8X8灰度值矩陣,因此我們首先導入sklearn庫自帶的datasets數據集。然後是交叉驗證庫,SVM分類演算法庫,繪制圖表庫等。
12345678910#導入自帶數據集from sklearn import datasets#導入交叉驗證庫from sklearn import cross_validation#導入SVM分類演算法庫from sklearn import svm#導入圖表庫import matplotlib.pyplot as plt#生成預測結果准確率的混淆矩陣from sklearn import metrics讀取並查看數字矩陣
從sklearn庫自帶的datasets數據集中讀取數字的8X8矩陣信息並賦值給digits。
12#讀取自帶數據集並賦值給digitsdigits = datasets.load_digits()查看其中的數字9可以發現,手寫的數字9以64個灰度值保存。從下面的8×8矩陣中很難看出這是數字9。
12#查看數據集中數字9的矩陣digits.data[9]以灰度值的方式輸出手寫數字9的圖像,可以看出個大概輪廓。這就是經過切割並以灰度保存的手寫數字9。它所對應的64個灰度值就是模型的訓練集,而真實的數字9是目標分類。我們的模型所要做的就是在已知64個灰度值與每個數字對應關系的情況下,通過對模型進行訓練來對新的手寫數字對應的真實數字進行分類。
1234#繪制圖表查看數據集中數字9的圖像plt.imshow(digits.images[9], cmap=plt.cm.gray_r, interpolation='nearest')plt.title('digits.target[9]')plt.show()
從混淆矩陣中可以看到,大部分的數字SVM的分類和預測都是正確的,但也有個別的數字分類錯誤,例如真實的數字2,SVM模型有一次錯誤的分類為1,還有一次錯誤分類為7。
⑹ 如何用python在10分鍾內建立一個預測模型
有各種各樣的方法可以驗證你模型性能,建議你將訓練數據集劃分為訓練集和驗證集(理想的比例是7030並且在70%訓練數據集上建模。現在使用30%驗證數據集進行交叉驗證並使用評價指標進行性能評估。最後需要12分鍾執行和記錄結果。
本文的目的不是贏得競賽,而是建立我自己的基準。讓我用python代碼來執行上面的方法,建立你第一個有較高影響的模型。
⑺ 如何在Python中用LSTM網路進行時間序列預測
時間序列模型
時間序列預測分析就是利用過去一段時間內某事件時間的特徵來預測未來一段時間內該事件的特徵。這是一類相對比較復雜的預測建模問題,和回歸分析模型的預測不同,時間序列模型是依賴於事件發生的先後順序的,同樣大小的值改變順序後輸入模型產生的結果是不同的。
舉個栗子:根據過去兩年某股票的每天的股價數據推測之後一周的股價變化;根據過去2年某店鋪每周想消費人數預測下周來店消費的人數等等
RNN 和 LSTM 模型
時間序列模型最常用最強大的的工具就是遞歸神經網路(recurrent neural network, RNN)。相比與普通神經網路的各計算結果之間相互獨立的特點,RNN的每一次隱含層的計算結果都與當前輸入以及上一次的隱含層結果相關。通過這種方法,RNN的計算結果便具備了記憶之前幾次結果的特點。
典型的RNN網路結構如下:
4. 模型訓練和結果預測
將上述數據集按4:1的比例隨機拆分為訓練集和驗證集,這是為了防止過度擬合。訓練模型。然後將數據的X列作為參數導入模型便可得到預測值,與實際的Y值相比便可得到該模型的優劣。
實現代碼
時間間隔序列格式化成所需的訓練集格式
這里的輸入數據來源是csv文件,如果輸入數據是來自資料庫的話可以參考這里
LSTM網路結構搭建
這里寫的只涉及LSTM網路的結構搭建,至於如何把數據處理規范化成網路所需的結構以及把模型預測結果與實際值比較統計的可視化,就需要根據實際情況做調整了。
⑻ python sklearn學習後的模型怎麼預測
決策樹學習可能創建一個過於復雜的樹,並不能很好的預測數據。也就是過擬合。
修剪機制(現在不支持),設置一個葉子節點需要的最小樣本數量,或者數的最大深度,可以避免過擬合。
⑼ python數據分析的一般步驟是什麼
下面是用python進行數據分析的一般步驟:
一:數據抽取
從外部源數據中獲取數據
保存為各種格式的文件、資料庫等
使用Scrapy爬蟲等技術
二:數據載入
從資料庫、文件中提取數據,變成DataFrame對象
pandas庫的文件讀取方法
三:數據處理
數據准備:
對DataFrame對象(多個)進行組裝、合並等操作
pandas庫的操作
數據轉化:
類型轉化、分類(面元等)、異常值檢測、過濾等
pandas庫的操作
數據聚合:
分組(分類)、函數處理、合並成新的對象
pandas庫的操作
四:數據可視化
將pandas的數據結構轉化為圖表的形式
matplotlib庫
五:預測模型的創建和評估
數據挖掘的各種演算法:
關聯規則挖掘、回歸分析、聚類、分類、時序挖掘、序列模式挖掘等
六:部署(得出結果)
從模型和評估中獲得知識
知識的表示形式:規則、決策樹、知識基、網路權值
更多技術請關注python視頻教程。
⑽ 如何利用python已有的機器學習預測分析核心演算法預測數據
所謂預測模型我理解是機器學習的監督式演算法。
常用的有 K 近鄰, 決策樹, 樸素貝葉斯等。
舉例:
使用k近鄰演算法預測一個女的是不是美女:
我們抽取特徵值: 身高,體重,三圍等。
你先設置一些經驗數據,例如:
A: 165CM 50KG, 23 32,31 美
B 150 60KG 23 23 23 丑
現在輸入
C 163 45 25 30 30
選擇K =3, 演算法會找經驗數據中和這個數據最接近的三個 值,判斷這三個對象是 美 還是丑。
如果2,3個美,則預測為美。否則為丑。
對應的python代碼在網上都有,估計20-30 行吧。
自己找找。