这个线性回归的作业需要上传到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 安装完成后就可以使用模型进行预测了,上完整代码

 # -*- coding: utf-8 -*-
__author__ = 'Administrator' # -*- coding:UTF-8 -*-
__author__ = 'tao' import csv
import cv2
import sys
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets, linear_model
import math filename = 'F:/台湾机器学习/data/train.csv'
ufilename = unicode(filename , "utf8") #这一块主要是因为汉字路径 也就是python调用open打开文件时,其路径必须要转换为utf-8格式
list=[]
result=[]
row=0
colum=0;
with open(ufilename, 'r') as f:
data = f.readlines() #dat中所有字符串读入data
for line in data:
odom = line.split(',') #将单个数据分隔开存好
colum=len(odom)
if 'PM2.5'in odom:
lists= map(int, odom[3:12])#第三个开始开始数据 一直取9个数
results= map(int, odom[12:13])#取第10个数
list.append(lists)
result.append(results)
# print odom
row=row+1 #print("原始数据是:{0}行 :{1}列 的数据".format(row, colum))
print("有{0}个训练数据".format(len(list))) ### regr = linear_model.LinearRegression()
regr.fit(list, result) #这里就是在训练模型了
print(' intercept: \n', regr. intercept_) #这就是w0,常数项
print('Coefficients: \n', regr.coef_) #这就是w1,常数项
b_0=regr. intercept_
th =regr.coef_; print("-训练得到的权值如下--")
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]) #测试训练集
for k in range(len(list)):
xset = np.array(list[k])
nptresult= np.array(result[k])
# print("预测数据{0}".format( b_0 + np.dot(th,xset)))
# print("真实数据{0}".format(nptresult))
error= b_0 + np.dot(th,xset)-nptresult
print("训练集的实际误差{0}".format(error)) #读取测试集数据
testfilename = 'F:/台湾机器学习/data/test_X.csv'
utestfilename = unicode(testfilename , "utf8") #这一块主要是因为汉字路径 也就是python调用open打开文件时,其路径必须要转换为utf-8格式
testlist=[]
testrow=0
testcolum=0;
with open(utestfilename, 'r') as f:
data = f.readlines() #dat中所有字符串读入data
for line in data:
odom = line.split(',') #将单个数据分隔开存好
colum=len(odom)
if 'PM2.5'in odom:
testlists= map(int, odom[2:11])#第三个开始开始数据 一直取9个数
testlist.append(testlists)
# print odom
testrow=row+1 print("测试数据是:{0}行 :{1}列 的数据".format(testrow, testcolum))
print("有{0}个测试数据".format(len(testlist)))
print(testlist) #输出最后的测试结果
csvfile = file('d:\\csv_result.csv', 'wb')
writer = csv.writer(csvfile)
writer.writerow(['id', 'value'])
for k in range(len(testlist)):
id_list=[]
xset = np.array(testlist[k])
result= b_0 +np.dot(th,xset)
int_result = int(result)
if(int_result<0):
int_result=0
id_list = [('id_{0}'.format(k), '{0}'.format(int_result))]
print(id_list)
writer.writerows(id_list)
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 Ridge
from sklearn.linear_model import Lasso
from 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就心满意足了。

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

  1. 机器学习 1 linear regression 作业

    话说学机器学习,不写代码就太扯淡了.好了,接着上一次的线性回归作业. hw1作业的链接在这: http://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2016/L ...

  2. [ML] Bayesian Linear Regression

    热身预览 1.1.10. Bayesian Regression 1.1.10.1. Bayesian Ridge Regression 1.1.10.2. Automatic Relevance D ...

  3. 机器学习 (二) 多变量线性回归 Linear Regression with Multiple Variables

    文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang 的个人 ...

  4. Andrew Ng机器学习编程作业: Linear Regression

    编程作业有两个文件 1.machine-learning-live-scripts(此为脚本文件方便作业) 2.machine-learning-ex1(此为作业文件) 将这两个文件解压拖入matla ...

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

    原文:http://blog.csdn.net/abcjennifer/article/details/7700772 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归 ...

  6. Stanford机器学习---第一讲. Linear Regression with one variable

    原文:http://blog.csdn.net/abcjennifer/article/details/7691571 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归 ...

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

    1. Multiple features(多维特征) 在机器学习之单变量线性回归(Linear Regression with One Variable)我们提到过的线性回归中,我们只有一个单一特征量 ...

  8. 斯坦福机器学习视频笔记 Week1 Linear Regression and Gradient Descent

    最近开始学习Coursera上的斯坦福机器学习视频,我是刚刚接触机器学习,对此比较感兴趣:准备将我的学习笔记写下来, 作为我每天学习的签到吧,也希望和各位朋友交流学习. 这一系列的博客,我会不定期的更 ...

  9. 斯坦福CS229机器学习课程笔记 Part1:线性回归 Linear Regression

    机器学习三要素 机器学习的三要素为:模型.策略.算法. 模型:就是所要学习的条件概率分布或决策函数.线性回归模型 策略:按照什么样的准则学习或选择最优的模型.最小化均方误差,即所谓的 least-sq ...

随机推荐

  1. maven 本地仓库和远程仓库

    在Maven中,任何一个依赖.插件或者项目构建的输出,都可以称之为构件. Maven在某个统一的位置存储所有项目的共享的构件,这个统一的位置,我们就称之为仓库.(仓库就是存放依赖和插件的地方) 任何的 ...

  2. Java获得键盘输入的两种方法

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...

  3. LINUX 下grep命令查找

    当出现查找文件出现匹配到二进制文件时,大概是因为文件同时含有文本文件与二进制文件,需要加上 grep -a,就可以解决问题.

  4. Linux 部署ASP.NET SQLite 应用 的坎坷之旅 附demo及源码

    Linux 部署ASP.NET SQLite 应用 的坎坷之旅.文章底部 附示例代码. 有一台闲置的Linux VPS,尝试着部署一下.NET 程序,结果就踏上了坑之路,不过最后算是完美解决问题,遂记 ...

  5. 基于 Jenkins 快速搭建持续集成环境

      什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火 ...

  6. 简单的jQuery幻灯片实现

    一.一些抱怨 自从国庆放假上班以来,又是忙碌的工作直到现在,但是说忙好像也没有加几天班,只是上班的时候工作排的挺满.但是别人貌似一直都不太忙(也是我自己觉得),感觉就很不爽. 我喜欢快速做完一件事,然 ...

  7. 【数据结构】平衡二叉树—AVL树

    (百度百科)在计算机科学中,AVL树是最先发明的自平衡二叉查找树.在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树.查找.插入和删除在平均和最坏情况下都是O(log n).增 ...

  8. Apache Mina实战

    Mina介绍 Mina可以用于快速的开发基于网络通信的应用,特别是在开发手机端的游戏应用时,使用的较为普遍.本文简单介绍了一个用Mina搭建的一个简易讨论组,通过该应用可以对Mina的基本用法用途有个 ...

  9. Android学习——uses-sdk标签详解

    1 前言 我们都知道,Android的版本在不断的迭代,并且每个版本都加入了不同的新特性.那么随着Android的用户量越来越多,Android的开发人员就必须熟悉Android各个版本的特性并且确保 ...

  10. Mac 软件篇

    对于美好事务的追求无论何时都不算晚. ** 文章内容来着我整理的fetool,以下内容可能更新不及时 ** Mac 下的软件那么多,又是免费又是付费,应该怎么选呢?我来分享下我的推荐列表,推荐的优先级 ...