⑴ python sklearn中怎樣預測給定的新數據
最近在拿 sklearn 做中文文本分類器,
網上找到的例子都是拿帶標簽的數據,二八劃分後,八成用於訓練模型,兩成用於測試,
然後分析測試結果看精確度。
現在,我已經使用訓練數據做好了模型訓練(存在文本分類器的對象了),
拿一段之前數據集裡面沒有的文本數據,使用訓練好的文本分類器做類別預測,
問題是如何拿到預測的類別的名稱呢。。。
代碼如下:
# cls 是之前已經訓練好的文本分類器對象
pred = clf.predict(X_new)
怎樣從預測結果 pred ( ndarray )獲取到分類的類別名稱呢?
我有嘗試過如下的方式去獲取:
label_list = list()
⑵ 最近一兩年最火的編程語言是python 預測未來幾年最火的編程語言是什麼
從實用角度,個人比較支持C#。
但要說會不會火,則不好說。因為C#比Python,JS之類的這種動態語言要復雜,學習起來需要更多的耐心,不太適合浮躁的初學者,但它的前景絕對是目前最應該被看好的,至少噱頭是最多的,平台是最新的,能做的事情也比Python,JS之類的語言要多,而且在GIT上面已經開始火了。國內也開始有大公司在用了,比如微信支付,不久前就剛剛使用.NET CORE重寫了一遍。
理由1,.NET CORE是目前全世界規模最大的開源項目,沒有之一。橫跨Windows,Mac OS,Linux三大PC系統;安卓,IOS兩大手機系統。不久的將來,可以使用一門編程語言,同時開發六大操作系統上的程序,而且非常容易互相移植。而C#是目前.NET CORE支持的唯一語言。
理由2,Unity3D是目前世界排名第一的游戲引擎,同時是世界排名第一的虛擬現實引擎,且增長速度也是最快的。目前全世界處於運營中的網游中,超過三分之一,都是使用Unity3D引擎開發而成。而從5.3版之後,C#成為了Unity3D唯一支持的腳本語言。
理由3,新版的C#速度非常快,且並發十分變態,並發比Node.JS高出6倍左右。速度上也遠遠高於Go語言。
理由4,目前本就是世界前5大編程語言之一。大學計算機系專業本就有C#課程。所以用戶基礎本來就很大,現在有了新平台,只是迎來第二春,遠比一個默默無名的語言火起來要容易的多。
說完了理由,來看看它都有什麼可以用來宣傳的噱頭吧。。。在不久的將來,它能做到的事情,比幾乎所有語言都要多。下列宣傳口號,我覺得就已經夠說明問題了。
(1)它是除了Javascript之外,唯一可以用於開發WebGL項目的語言;
(2)它是除了JAVA之外,唯一可以開發完整源生安卓APP的語言;
(3)它是除了Swift和OC之外,唯一可以開發IOS源生APP的語言。
(4)它是除了Python之外,唯一擁有全套人工智慧開發框架的語言;
(5)它是目前唯一可以開發混合現實項目的語言
(6)它擁有「一次開發,到處部署」的能力(編寫一次代碼,便可以在電腦,手機的任何操作系統上面運行)
從功用上講,幾乎是無敵的,而且它目前已經是游戲開發行業的第一大語言了。問題在於,C#的學習過程確實比Python之類的語言要漫長的多。
⑶ python gradientboostingregressor可以做預測嗎
可以
最近項目中涉及基於Gradient Boosting Regression 演算法擬合時間序列曲線的內容,利用python機器學習包scikit-learn 中的GradientBoostingRegressor完成
因此就學習了下Gradient Boosting演算法,在這里分享下我的理解
Boosting 演算法簡介
Boosting演算法,我理解的就是兩個思想:
1)「三個臭皮匠頂個諸葛亮」,一堆弱分類器的組合就可以成為一個強分類器;
2)「知錯能改,善莫大焉」,不斷地在錯誤中學習,迭代來降低犯錯概率
當然,要理解好Boosting的思想,首先還是從弱學習演算法和強學習演算法來引入:
1)強學習演算法:存在一個多項式時間的學習演算法以識別一組概念,且識別的正確率很高;
2)弱學習演算法:識別一組概念的正確率僅比隨機猜測略好;
Kearns & Valiant證明了弱學習演算法與強學習演算法的等價問題,如果兩者等價,只需找到一個比隨機猜測略好的學習演算法,就可以將其提升為強學習演算法。
那麼是怎麼實現「知錯就改」的呢?
Boosting演算法,通過一系列的迭代來優化分類結果,每迭代一次引入一個弱分類器,來克服現在已經存在的弱分類器組合的shortcomings
在Adaboost演算法中,這個shortcomings的表徵就是權值高的樣本點
而在Gradient Boosting演算法中,這個shortcomings的表徵就是梯度
無論是Adaboost還是Gradient Boosting,都是通過這個shortcomings來告訴學習器怎麼去提升模型,也就是「Boosting」這個名字的由來吧
Adaboost演算法
Adaboost是由Freund 和 Schapire在1997年提出的,在整個訓練集上維護一個分布權值向量W,用賦予權重的訓練集通過弱分類演算法產生分類假設(基學習器)y(x),然後計算錯誤率,用得到的錯誤率去更新分布權值向量w,對錯誤分類的樣本分配更大的權值,正確分類的樣本賦予更小的權值。每次更新後用相同的弱分類演算法產生新的分類假設,這些分類假設的序列構成多分類器。對這些多分類器用加權的方法進行聯合,最後得到決策結果。
其結構如下圖所示:
可以發現,如果要用Gradient Boosting 演算法的話,在sklearn包里調用還是非常方便的,幾行代碼即可完成,大部分的工作應該是在特徵提取上。
感覺目前做數據挖掘的工作,特徵設計是最重要的,據說現在kaggle競賽基本是GBDT的天下,優劣其實還是特徵上,感覺做項目也是,不斷的在研究數據中培養對數據的敏感度。
⑷ 用Python怎麼預測折線圖的未來趨勢
單靠折線圖的話恐怕是不行的,但你可以從折線圖上選點,用指數平滑曲線或者多項式線性模型去擬合,得到曲線模型。或者,可以使用非參的方法,例如k近鄰,logistic方法去預測點的走勢。
⑸ python xgboost怎麼預測
1、下載python安裝包https://www.python.org/ftp/python/3.5.1/python-3.5.1-amd64.exe 當然,你也可以根據你的需要下載不同版本的python。 2、雙擊安裝程序python-X.X.X.msi 3、選擇Install for all users
⑹ python 神經網路預測 持續性預測
學習人工智慧時,我給自己定了一個目標--用Python寫一個簡單的神經網路。為了確保真得理解它,我要求自己不使用任何神經網路庫,從頭寫起。多虧了Andrew Trask寫得一篇精彩的博客,我做到了!下面貼出那九行代碼:在這篇文章中,我將解釋我是如何做得,以便你可以寫出你自己的。我將會提供一個長點的但是更完美的源代碼。
⑺ 如何利用Python預測股票價格
預測股票價格沒有意義。
單支股票價格,多股組合,大盤這些都可以使用神經網路來學習,02年就做過了,漲跌預測平均能達到54%到57%的准確率,但是只能定性,無法定量,因此,在扣除印花稅之後無利可圖。
純粹使用股票交易數據來預測並保證總體獲利不是程序能辦到的,人也辦不到。
目前世界上最先進的炒股機器也只能利用網路時差那微不可計的零點幾秒在歐洲與美國證券間倒來倒去,那套系統研發費用數千萬,硬體(主要是獨立光纜)費用以億計。
⑻ 如何用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在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=)
現在可以提交了!