使用Go 机器学习库来进行数据分析 3 (平均感知器)
smallnest · · 3847 次点击 · · 开始浏览目录 [−]
这一次,我们使用平均感知器(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 Class True Positives False Positives True Negatives Precision Recall F1 Score---------------------------------------------------------------------------------democrat 98 24 70 0.8033 0.6806 0.7368republican 70 46 98 0.6034 0.7447 0.6667Overall accuracy: 0.7059
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
目录 [−]
这一次,我们使用平均感知器(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 Class True Positives False Positives True Negatives Precision Recall F1 Score---------------------------------------------------------------------------------democrat 98 24 70 0.8033 0.6806 0.7368republican 70 46 98 0.6034 0.7447 0.6667Overall accuracy: 0.7059