利用回归模型对数据进行训练,然后预测。多特征,单输出。

使用不同的回归模型进行预测,对特征预测。
给出模型预测分数。

from math import sqrt

import matplotlib.pyplot as plt
from numpy import split
from numpy import array
from pandas import read_csv
from sklearn.metrics import mean_squared_error
from matplotlib import pyplot
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import MinMaxScaler
from sklearn.pipeline import Pipeline
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import Lasso
from sklearn.linear_model import Ridge
from sklearn.linear_model import ElasticNet
from sklearn.linear_model import HuberRegressor
from sklearn.linear_model import Lars
from sklearn.linear_model import LassoLars
from sklearn.linear_model import PassiveAggressiveRegressor
from sklearn.linear_model import RANSACRegressor
from sklearn.linear_model import SGDRegressor
import pandas as pd
from sklearn.model_selection import train_test_split
import  numpy as np
from sklearn.metrics import r2_score

models_name=['lr','lasso','ridge','en','huber','llars','Lars','pa']
def get_models(models=dict()):
	models['lr'] = LinearRegression(fit_intercept=True, normalize=True, copy_X=True, n_jobs=None)
	models['lasso'] = Lasso(fit_intercept=True, normalize=True, copy_X=True)
	models['ridge'] = Ridge(fit_intercept=True, normalize=True,  copy_X=True)
	models['en'] = ElasticNet(fit_intercept=True, normalize=True, copy_X=True)
	models['huber'] = HuberRegressor(max_iter=10000)
	models['llars'] = LassoLars(fit_intercept=True, copy_X=True, normalize=True)
	models['Lars']  = Lars()
	models['pa'] = PassiveAggressiveRegressor(max_iter=10000, tol=1e-3)
	print('Defined %d models' % len(models))
	return models
#读取数据
data = pd.read_csv('data/data3.csv')
#x—特征
X = data[['jiaohua', 'shaojie', 'liantie','yelian','jinglian','lianzhu','zhagang','qita','feitie','feigang','dianji','baiyunshi']]
#y-标签
y = data['jieguo']
#分割数据
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=123)
y_train =np.array(y_train)
y_test =np.array(y_test)
models = get_models()
days = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']
y_yuce=[]
pyplot.plot(days, y, marker='o', label="Ture")
y = array(y)
# y_test_score = (y_test[0]+y_test[1]+y_test[2])/3
score_num = []
for name,model in models.items():
	model.fit(X_train, y_train)
	y_pred = model.predict(X)
	# # y_pred_score = (y_pred[0]+y_pred[1]+y_pred[2])/3
	# score = y_pred_score-y_test_score
	score = r2_score(y,y_pred,sample_weight=None, multioutput='uniform_average')
	score_num.append(score)
	print("%s模型的分数:%f"%(name,score))
	pyplot.plot(days, y_pred, marker='o', label=name)
pyplot.legend()
pyplot.show()
for i,num in enumerate(score_num):
	plt.plot(models_name[i],num,label = models_name[i], marker='o')
pyplot.legend()
pyplot.show()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值