sklearn线性回归学习中遇到的问题及解决方法
来源:互联网 发布:sqlserver触发器实例 编辑:程序博客网 时间:2024/05/19 23:59
最近因为做毕业设计开始学习机器学习,这一周主要是对数据进行操作做出可视化的图来分析,另外就是学习论文中提到的一些机器学习算法。
现在仅仅是利用sklearn库中的现有方法实现训练和测试,但是由于手中现有的数据比较复杂,并不适合用线性回归的方法去拟合,所以效果并不理想。
1.首先是原始数据格式的问题:
我拿到的数据是csv格式的,用reader读进来以后是用‘\t’对每个字符分隔,每行都是list。但是这样就不能用list[1][1]这种方法对单独某条记录中的一个字段进行处理,所以就进行如下的步骤:
reader=csv.reader(file(csvfile,'rb'))tmp=[] for line in reader: str="".join(line).split('\t') tmp.append(str)
这样就变成每行的字段之间用‘,’进行分隔,可以单独提取某个字段了。但是提取的表示如下:
for i in tmp: if i[0].find(day)<>-1: numberoflines+=1
相当于把一行看成一个字符串数组。
2.一个去除重复的小技巧:
label0=list(set(label))#得到观测日期的不重复记录3.无论哪一种模型进行fit的时候输入都要是列向量
输入是类似于列向量的,输出类似于行向量,看它们各自的shape就是:
输出:y.shape ——>(1,)
输入:x.shape——->(m,1) #m是一个数字
而我的数据是行向量,所以需要转置
date=mat(date).T #一开始没注意数据格式 fit的参数需要是矩阵格式minprice=mat(minprice).T date_train=date[:-10] date_test=date[-10:]minprice_train=minprice[:-10]minprice_test=minprice[-10:]
所以在最后求残差平方和和方差就要再转换回去,不然两个大小不一致
print ("Residual sum of squares:%.2f" %mean((model.predict(date_test)-list(minprice_test.T))**2))#残差平方和print ('Variance score: %.2f' % model.score(date_test,minprice_test))#方差
4.日期数据做横轴显示问题和date2num,num2date方法
import pylab as pl
import matplotlib.ticker as tickerimport matplotlib.dates as mdatesfrom datetime import datetime
如果日期数据是自变量就要把它变成float数据进行处理 用date2num方法
date=pl.datestr2num(date)下面是显示横轴日期:
fig=pl.figure(figsize=(12,6))plt.scatter(date_test,minprice_test, color='black')plt.plot(date_test, regr.predict(date_test), color='blue',linewidth=3)ax=fig.gca() ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))plt.xticks(())plt.yticks(())plt.show()
5.几种线性回归方法
from sklearn import datasets,linear_model,metrics
def prediction(date_train,minprice_train,date_test,minprice_test):#普通线性回归 # minprice,date=findminprice(csvfile,'2015-03-10') # date=pl.datestr2num(date) # date=mat(date).T #一开始没注意数据格式 fit的参数需要是矩阵格式 # minprice=mat(minprice).T # print date regr=linear_model.LinearRegression() regr.fit(date_train,minprice_train) # predict_outcome = regr.predict(pl.datestr2num(predate)) fig=pl.figure(figsize=(12,6)) plt.scatter(date_test,minprice_test, color='black') plt.plot(date_test, regr.predict(date_test), color='blue',linewidth=3) ax=fig.gca() ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d')) plt.xticks(()) plt.yticks(()) plt.show() print("Residual sum of squares: %.2f" % mean((regr.predict(date_test) - list(minprice_test.T)) ** 2)) # Explained variance score: 1 is perfect prediction print('Variance score: %.2f' % regr.score(date_test, minprice_test))def ridgeprediction(date_train,minprice_train,date_test,minprice_test):#Ridge线性回归 clf=linear_model.Ridge(alpha=1.0) clf.fit(date_train,minprice_train) fig=pl.figure(figsize=(12,6)) plt.scatter(date_test,minprice_test, color='black') plt.plot(date_test, clf.predict(date_test), color='blue',linewidth=3) ax=fig.gca() ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d')) plt.xticks(()) plt.yticks(()) plt.show() print("Residual sum of squares: %.2f" % mean((clf.predict(date_test) - list(minprice_test.T)) ** 2)) # Explained variance score: 1 is perfect prediction print('Variance score: %.2f' % clf.score(date_test, minprice_test))def cartprediction(date_train,minprice_train,date_test,minprice_test):#CART线性回归 model=DecisionTreeClassifier() model.fit(date_train,minprice_train) fig=pl.figure(figsize=(12,6)) plt.scatter(date_test,minprice_test, color='black') plt.plot(date_test, model.predict(date_test), color='blue',linewidth=3) ax=fig.gca() ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d')) plt.xticks(()) plt.yticks(()) plt.show() # print model.predict(date_test) # print minprice_test.T # print model.predict(date_test)-minprice_test.T # a=(model.predict(date_test)-minprice_test)**2 print ("Residual sum of squares:%.2f" %mean((model.predict(date_test)-list(minprice_test.T))**2))#残差平方和 print ('Variance score: %.2f' % model.score(date_test,minprice_test))#方差
0 0
- sklearn线性回归学习中遇到的问题及解决方法
- 逻辑回归及线性回归过拟合问题的解决方法
- sklearn 使用过程中遇到的问题和解决方法
- Android学习过程中遇到的问题及解决方法
- android 学习中遇到的问题及解决方法
- 安卓学习中遇到的问题及解决方法
- android 学习中遇到的问题及解决方法
- spark学习过程中遇到的问题及解决方法
- 【总结】嵌入式Linux学习中遇到的问题及解决方法
- 机器学习sklearn多元线性回归
- 机器学习sklearn多元线性回归2
- 机器学习之线性回归 (Python SKLearn)
- sklearn中线性回归、岭回归、多xiang式回归
- HorizontalScrollView中遇到的问题及解决方法
- Spring中遇到的问题及解决方法
- sklearn一元线性回归
- sklearn--线性回归
- sklearn中的线性回归
- SendMessage 死锁
- 手机网站开发趋势
- AlphaGo:黑色方碑?
- 二分答案法、三分法
- 选择C runtime 函数库
- sklearn线性回归学习中遇到的问题及解决方法
- Android:Eclipse 安装Genymotion插件的时候出现 There are no categorized items
- GDAL输出影像
- HDUACM2054-指针处理字符串
- mac下配置oh-my-zsh
- Android 创建Fragment然后添加到Activity中
- MYSQL5.7.11 Windows压缩版简单安装
- SASS用法指南
- zepto图片延迟加载插件picLazyLoad