In [2]:
# coding:utf-8
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split,GridSearchCV
from sklearn.linear_model import LinearRegression,Lasso,Ridge,RidgeCV,LassoCV,ElasticNetCV
from sklearn.preprocessing import PolynomialFeatures
import warnings
%matplotlib inline
warnings.filterwarnings(action='ignore') #不输出警告
np.set_printoptions(suppress=True)
In [3]:
data = pd.read_csv('Advertising.csv')
x = data[['TV','Radio','Newspaper']]
y = data['Sales']
print(x)
print(y)
In [4]:
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.3,train_size=0.7)
print(x_train)
print(y_train)
In [5]:
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=1)
#model = Lasso()
model = Ridge()
alpha_can = np.logspace(-3, 2, 10)
lasso_model = GridSearchCV(model, param_grid={'alpha': alpha_can}, cv=8)
lasso_model.fit(x_train, y_train)
print('lasso_model.best_params_:\n', lasso_model.best_params_)
print('lasso_model.grid_scores_',lasso_model.grid_scores_)
print('lasso_model.best_score_',lasso_model.best_score_)
y_hat = lasso_model.predict(np.array(x_test))
print(lasso_model.score(x_test, y_test))
mse = np.average((y_hat - np.array(y_test)) ** 2) # Mean Squared Error
rmse = np.sqrt(mse) # Root Mean Squared Error
print(mse, rmse)
In [6]:
t = np.arange(len(x_test))
mpl.rcParams['font.sans-serif'] = [u'simHei']
mpl.rcParams['axes.unicode_minus'] = False
plt.plot(t, y_test, 'r-', linewidth=2, label=u'truth')
plt.plot(t, y_hat, 'g-', linewidth=2, label=u'predict')
plt.title(u'sales linear regression', fontsize=18)
plt.legend(loc='upper right')
plt.grid()
plt.show()
In [7]:
linreg = LinearRegression(normalize=True)
model = linreg.fit(x_train, y_train)
print(model)
print(linreg.coef_)
print(linreg.intercept_)
y_hat = linreg.predict(np.array(x_test))
mse = np.average((y_hat - np.array(y_test)) ** 2) # Mean Squared Error
rmse = np.sqrt(mse) # Root Mean Squared Error
print(mse, rmse)
t = np.arange(len(x_test))
plt.plot(t, y_test, 'r-', linewidth=2, label=u'truth')
plt.plot(t, y_hat, 'g-', linewidth=2, label=u'predict')
plt.legend(loc='upper right')
plt.title(u'sales linear rgression', fontsize=18)
plt.grid()
plt.show()
In [8]:
lasso_cv = LassoCV(alphas=alpha_can,cv=8)
lasso_cv.fit(x_train,y_train)
print(lasso_cv.coef_)
print(lasso_cv.intercept_)
y_cv = lasso_cv.predict(np.array(x_test))
print("mse of Linear Regresion+Lasso squares is", np. mean(( y_cv - y_test ) ** 2))
print("accuracy of Linear regression is",lasso_cv.score(x_test,y_test))
In [9]:
ridge_cv = RidgeCV(alphas=alpha_can,cv=8)
ridge_cv.fit(x_train,y_train)
print("参数theta",ridge_cv.coef_)
print(ridge_cv.intercept_)
y_cv = ridge_cv.predict(np.array(x_test))
print("mse of Linear Regresion+Lasso squares is", np. mean(( y_cv - y_test ) ** 2))
print("accuracy of Linear regression is",ridge_cv.score(x_test,y_test))
In [ ]: