30分鐘學會用scikit-learn的基本回歸方法
前言:本教程主要使用了numpy的最最基本的功能,用於生成數據,matplotlib用於繪圖,scikit-learn用於調用機器學習方法。如果你不熟悉他們(我也不熟悉),沒關係,看看numpy和matplotlib最簡單的教程就夠了。我們這個教程的程序不超過50行。
1. 數據準備
為了實驗用,我自己寫了一個二元函數,y=0.5*np.sin(x1)+ 0.5*np.cos(x2)+0.1*x1+3。
其中x1的取值範圍是0~50,x2的取值範圍是-10~10,x1和x2的訓練集一共有500個,測試集有100個。其中,在訓練集的上加了一個-0.5~0.5的雜訊。生成函數的代碼如下:
其中訓練集(y上加有-0.5~0.5的隨機雜訊)和測試集(沒有雜訊)的圖像如下:
2. scikit-learn最簡單的介紹
scikit-learn非常簡單,只需實例化一個演算法對象,然後調用fit()函數就可以了,fit之後,就可以使用predict()函數來預測了,然後可以使用score()函數來評估預測值和真實值的差異,函數返回一個得分。例如調用決策樹的方法如下:
下來,我們可以根據預測值和真值來畫出一個圖像。畫圖的代碼如下:
然後圖像會顯示如下:
3. 開始試驗各種不同的回歸方法
為了加快測試, 這裡寫了一個函數,函數接收不同的回歸類的對象,然後它就會畫出圖像,並且給出得分.
函數基本如下:
3.1 常規回歸方法
常規的回歸方法有線性回歸,決策樹回歸,SVM和k近鄰(KNN)
3.1.1 線性回歸
3.1.2數回歸
然後決策樹回歸的圖像就會顯示出來:
3.1.3 SVM回歸
結果圖像如下:
3.1.4 KNN
竟然KNN這個計算效能最差的演算法效果最好
3.2 集成方法(隨機森林,adaboost, GBRT)
3.2.1隨機森林
3.2.2 Adaboost
圖像如下:
3.2.3 GBRT
4. scikit-learn還有很多其他的方法,可以參考用戶手冊自行試驗.
5.完整代碼
我這裡在pycharm寫的代碼,但是在pycharm裡面不顯示圖形,所以可以把代碼複製到ipython中,使用%paste方法複製代碼片.
然後參照上面的各個方法導入演算法,使用try_different_mothod()函數畫圖.
完整代碼如下:
- 加入AI學院學習 -
※用 Keras 編寫你的第一個人工神經網路
※基於區塊鏈的機器學習模型創建方案
TAG:AI講堂 |