机器学习 1 linear regression 作业(二)

机器学习 1 linear regression 作业(二)

这个线性回归的作业需要上传到https://inclass.kaggle.com/c/ml2016-pm2-5-prediction 上面,这是一个kaggle比赛的网站。第一次接触听说这个东西,恰好在京东上有一本刚出来的关于这个的书《Python机器学习及实践:从零开始通往Kaggle竞赛之路》。把我自己写的代码运行保存的结果提交上去后发现,损失函数值很大,baseline是6,而我的却是8,于是很不心甘,尝试了其他方法无果后,准备利用scikit learn 工具刷刷数据。

具体步骤:

1 安装scikit learn  ,在CMD下输入

pip install -U scikit-learn

2 安装完成后就可以使用模型进行预测了,上完整代码

 1 # -*- coding: utf-8 -*-
 2 __author__ = ‘Administrator‘
 3
 4
 5
 6 # -*- coding:UTF-8 -*-
 7 __author__ = ‘tao‘
 8
 9 import csv
10 import cv2
11 import sys
12 import numpy as np
13 import matplotlib.pyplot as plt
14 from sklearn import datasets, linear_model
15 import math
16
17
18 filename = ‘F:/台湾机器学习/data/train.csv‘
19 ufilename = unicode(filename , "utf8") #这一块主要是因为汉字路径 也就是python调用open打开文件时,其路径必须要转换为utf-8格式
20 list=[]
21 result=[]
22 row=0
23 colum=0;
24 with open(ufilename, ‘r‘) as f:
25     data = f.readlines()  #dat中所有字符串读入data
26     for line in data:
27         odom = line.split(‘,‘)        #将单个数据分隔开存好
28         colum=len(odom)
29         if ‘PM2.5‘in odom:
30             lists= map(int, odom[3:12])#第三个开始开始数据  一直取9个数
31             results= map(int, odom[12:13])#取第10个数
32             list.append(lists)
33             result.append(results)
34             # print odom
35         row=row+1
36
37 #print("原始数据是:{0}行 :{1}列 的数据".format(row, colum))
38 print("有{0}个训练数据".format(len(list)))
39
40
41 ###
42
43 regr = linear_model.LinearRegression()
44 regr.fit(list, result) #这里就是在训练模型了
45 print(‘ intercept: \n‘, regr. intercept_) #这就是w0,常数项
46 print(‘Coefficients: \n‘, regr.coef_) #这就是w1,常数项
47
48 b_0=regr. intercept_
49 th =regr.coef_;
50
51 print("-训练得到的权值如下--")
52 print" %10.5f %10.5f  %10.5f %10.5f   %10.5f  %10.5f  %10.5f %10.5f   %10.5f  %10.5f \n" %(b_0,th[0][0],th[0][1],th[0][2],th[0][3],th[0][4],th[0][5],th[0][6],th[0][7],th[0][8])
53
54 #测试训练集
55 for k in range(len(list)):
56     xset = np.array(list[k])
57     nptresult= np.array(result[k])
58     # print("预测数据{0}".format( b_0 + np.dot(th,xset)))
59     # print("真实数据{0}".format(nptresult))
60     error= b_0 + np.dot(th,xset)-nptresult
61     print("训练集的实际误差{0}".format(error))
62
63
64 #读取测试集数据
65 testfilename = ‘F:/台湾机器学习/data/test_X.csv‘
66 utestfilename = unicode(testfilename , "utf8") #这一块主要是因为汉字路径 也就是python调用open打开文件时,其路径必须要转换为utf-8格式
67 testlist=[]
68 testrow=0
69 testcolum=0;
70 with open(utestfilename, ‘r‘) as f:
71     data = f.readlines()  #dat中所有字符串读入data
72     for line in data:
73         odom = line.split(‘,‘)        #将单个数据分隔开存好
74         colum=len(odom)
75         if ‘PM2.5‘in odom:
76             testlists= map(int, odom[2:11])#第三个开始开始数据  一直取9个数
77             testlist.append(testlists)
78             # print odom
79         testrow=row+1
80
81 print("测试数据是:{0}行 :{1}列 的数据".format(testrow, testcolum))
82 print("有{0}个测试数据".format(len(testlist)))
83 print(testlist)
84
85 #输出最后的测试结果
86 csvfile = file(‘d:\\csv_result.csv‘, ‘wb‘)
87 writer = csv.writer(csvfile)
88 writer.writerow([‘id‘, ‘value‘])
89 for k in range(len(testlist)):
90     id_list=[]
91     xset = np.array(testlist[k])
92     result= b_0 +np.dot(th,xset)
93     int_result = int(result)
94     if(int_result<0):
95         int_result=0
96     id_list = [(‘id_{0}‘.format(k), ‘{0}‘.format(int_result))]
97     print(id_list)
98     writer.writerows(id_list)
99 csvfile.close()

得到的程序

-训练得到的权值如下--
bo 1.86833  wo -0.07357  w1 0.08100  w2 0.16498  w3-0.25133 w4 -0.05844 w5 0.67979 w5 -0.66656 w6 -0.12575 w7 1.22998

然后试了试:

from sklearn.linear_model import Ridgefrom sklearn.linear_model import Lassofrom sklearn.ensemble import GradientBoostingRegressor as GBR下面三种回归方法,都没有达到好的排名。。。囧,

#regr = linear_model.LinearRegression()
#regr = linear_model.Ridge()
# regr = linear_model.Lasso()
regr =  GBR()

regr.fit(list, result) #这里就是在训练模型了

print(‘ intercept: \n‘, regr. intercept_) #这就是w0,常数项
print(‘Coefficients: \n‘, regr.coef_) #这就是w1,常数项
###

 error=  regr.predict(xset)-nptresult

参考博客:http://blog.csdn.net/sa14023053/article/details/51817650

算了,超过baseline就心满意足了。

时间: 2024-09-29 04:42:31

机器学习 1 linear regression 作业(二)的相关文章

机器学习 1 linear regression 作业

机器学习 1 linear regression 作业 话说学机器学习,不写代码就太扯淡了.好了,接着上一次的线性回归作业. hw1作业的链接在这: http://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2016/Lecture/hw1.pdf 作业是预测台湾的PM2.5的指数,既然是回归问题,肯定是用的是上一节课的线性回归了. 以上数据我传到https://pan.baidu.com/s/1dFhwT13 上面了,供有兴趣的人做做. 实际上上述中分为训练

Coursera公开课机器学习:Linear Regression with multiple variables

多特征 实际上我们真正买过房子的都知道,在选择房子的时候,需要考虑的不仅仅是面积,地段.结构.房龄.邻里关系之类的都应该是考虑对象,所以前面几讲谈论的,单纯用面积来谈房价,不免失之偏颇. 多考虑些特性 我们加入一些特性来考虑房价问题: 符号解释 $n$:特性数目 $x ^{(i)}$:输入的第$i$个训练数据 $x ^{(i)} _j$:第$i$个训练数据的第$j$个特性 $h _\theta (x)$ 相应的,$h _\theta (x)$也就变了: $h _\theta (x) = \the

Exercise: Linear Regression 斯坦福作业二 (转)

题目给出的数据是一组2-8岁男童的身高.x是年龄,y是身高.样本数m=50. 使用gradient descent来做线性回归. step1:数据准备. 加载数据: >> x=load('ex2x.dat'); >> y=load('ex2y.dat'); 可视化数据: figure % open a new figure window plot(x, y, 'o'); ylabel('Height in meters') xlabel('Age in years') 效果如下:

机器学习之多变量线性回归(Linear Regression with multiple variables)

1. Multiple features(多维特征) 在机器学习之单变量线性回归(Linear Regression with One Variable)我们提到过的线性回归中,我们只有一个单一特征量(变量)--房屋面积x.我们希望使用这个特征量来预测房子的价格.我们的假设在下图中用蓝线划出: 不妨思考一下,如果我们不仅仅知道房屋面积(作为预测房屋价格的特征量(变量)),我们还知道卧室的数量.楼层的数量以及房屋的使用年限,那么这就给了我们更多可以用来预测房屋价格的信息. 即,支持多变量的假设为:

ufldl学习笔记与编程作业:Linear Regression(线性回归)

ufldl出了新教程,感觉比之前的好.从基础讲起.系统清晰,又有编程实践. 在deep learning高质量群里面听一些前辈说.不必深究其它机器学习的算法.能够直接来学dl. 于是近期就開始搞这个了,教程加上matlab编程,就是完美啊. 新教程的地址是:http://ufldl.stanford.edu/tutorial/ 本节学习链接:http://ufldl.stanford.edu/tutorial/supervised/LinearRegression/ 从一个最简单的线性回归,能够

机器学习经典算法具体解释及Python实现--线性回归(Linear Regression)算法

(一)认识回归 回归是统计学中最有力的工具之中的一个. 机器学习监督学习算法分为分类算法和回归算法两种,事实上就是依据类别标签分布类型为离散型.连续性而定义的. 顾名思义.分类算法用于离散型分布预測,如前面讲过的KNN.决策树.朴素贝叶斯.adaboost.SVM.Logistic回归都是分类算法.回归算法用于连续型分布预測.针对的是数值型的样本,使用回归.能够在给定输入的时候预測出一个数值.这是对分类方法的提升,由于这样能够预測连续型数据而不不过离散的类别标签. 回归的目的就是建立一个回归方程

Stanford机器学习---第二讲. 多变量线性回归 Linear Regression with multiple variable

原文:http://blog.csdn.net/abcjennifer/article/details/7700772 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归.Octave Tutorial.Logistic Regression.Regularization.神经网络.机器学习系统设计.SVM(Support Vector Machines 支持向量机).聚类.降维.异常检测.大规模机器学习等章节.所有内容均来自Standford公开课machine

从零单排入门机器学习:线性回归(linear regression)实践篇

线性回归(linear regression)实践篇 之前一段时间在coursera看了Andrew ng的机器学习的课程,感觉还不错,算是入门了. 这次打算以该课程的作业为主线,对机器学习基本知识做一下总结.小弟才学疏浅,如有错误.敬请指导. 问题原描写叙述: you will implement linear regression with one variable to predict prots for a food truck. Suppose you are the CEO of a

机器学习 (一) 单变量线性回归 Linear Regression with One Variable

文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang和 JerryLead 的个人笔记,为我做个人学习笔记提供了很好的参考和榜样. § 1.  单变量线性回归 Linear Regression with One Variable 1. 代价函数Cost Function 在单变量线性回归中,已知有一个训练集有一些关于x.y的数据(如×所示),当我们的预测值