使用Go 機器學習庫來進行資料分析 3 (平均感知器)

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

目錄 [−]

  1. 1984美國國會投票記錄資料集
  2. 平均感知器
  3. 代碼
  4. 評估結果

這一次,我們使用平均感知器(Average Perceptron)演算法來預測美國國會的投票。

1984美國國會投票記錄資料集

這一次,我們使用1984美國國會的投票記錄來預測一下投票結果。

資料集針對不同的投票議題分為了16類, 記錄了民主黨和共和黨議員們得投票結果。

格式如下

123456789101112131415
v16,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,party1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican-1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican-1,-1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,democrat1,-1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,democrat1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,1,democrat1,-1,1,1,-1,1,1,-1,-1,-1,-1,-1,-1,1,1,1,democrat1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,-1,-1,1,1,democrat1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,-1,1,1,-1,republican1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican-1,1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,-1,democrat-1,-1,1,-1,1,1,-1,-1,-1,-1,-1,-1,-1,1,1,-1,republican-1,-1,1,-1,1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,republican......

這一次,我們還是將資料集分為訓練資料和測試資料,以評估演算法的預測結果的準確性。

平均感知器

感知器演算法一個監督學習的二分分類器, 是線性分類器的一種。

感知機演算法是非常好的二分類演算法,該演算法求取一個分離超平面,超平面由w參數化並用來預測,對於一個樣本x,感知機演算法通過計算y = [w,x]預測樣本的標籤,最終的預測標籤通過計算sign(y)來實現。演算法僅在預測錯誤時修正權值w。
平均感知機和感知機演算法的訓練方法一樣,不同的是每次訓練樣本xi後,保留先前訓練的權值,訓練結束後平均所有權值。最終用平均權值作為最終判別準則的權值。參數平均化可以克服由於學習速率過大所引起的訓練過程中出現的震蕩現象。

代碼

12345678910111213141516171819202122232425262728293031323334
package mainimport ("fmt"base "github.com/sjwhitworth/golearn/base"evaluation "github.com/sjwhitworth/golearn/evaluation"perceptron "github.com/sjwhitworth/golearn/perceptron""math/rand")func main() {rand.Seed(4402201)rawData, err := base.ParseCSVToInstances("../datasets/house-votes-84.csv", true)if err != nil {panic(err)}//Initialises a new AveragePerceptron classifiercls := perceptron.NewAveragePerceptron(10, 1.2, 0.5, 0.3)//Do a training-test splittrainData, testData := base.InstancesTrainTestSplit(rawData, 0.50)fmt.Println(trainData)fmt.Println(testData)cls.Fit(trainData)predictions := cls.Predict(testData)// Prints precision/recall metricsconfusionMat, _ := evaluation.GetConfusionMatrix(testData, predictions)fmt.Println(evaluation.GetSummary(confusionMat))}

首先讀入國會投票資料集。

然後建立平均感知器演算法執行個體。

之後將資料集分為兩份,一份訓練資料,一份用來預測和評估。

最後將評估結果列印。

評估結果

12345
Reference ClassTrue PositivesFalse PositivesTrue NegativesPrecisionRecallF1 Score---------------------------------------------------------------------------------democrat9824700.80330.68060.7368republican7046980.60340.74470.6667Overall accuracy: 0.7059

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.