import warnings import numpy as np import pandas as pd from sklearn.linear_model import LinearRegression, Lasso, Ridge, ElasticNet from sklearn.model_selection import train_test_split from sklearn.preprocessing import PolynomialFeatures import matplotlib.pyplot as plt import matplotlib.pylab as mpl import sys import joblib warnings.filterwarnings("ignore") # 画图出现中文符 mpl.rcParams['font.sans-serif'] = [u'simHei'] mpl.rcParams['axes.unicode_minus'] = False # 加载数据 data = pd.read_csv('../data/boston_housing.data', sep='\s+', header=None) # 获取特征属性X和目标属性Y X = data.iloc[:, :-1] Y = data.iloc[:, -1] # 拆分数据集为训练集和测试集; random_state:随机数种子控制训练集,测试集的固定划分 x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.3, random_state=20) # 构建特征工程,改变欠拟合 """ PolynomialFeatures ####多项式扩展 degree=2,扩展阶数 interaction_only = False, 是否只保留交互项 include_bias=True, 是否需要偏置项 """ print(x_train.shape) print(x_test.shape) # degree:代表扩展阶数 poly = PolynomialFeatures(degree=3, interaction_only=True, include_bias=False) """ fit:等价于算法流程当中的训练过程 fit_transform: 相当于fit()+transform() interaction_only:保留交互项例如:x1*x2 transform:对输入的数据进行转换输出 """ # 已经扩展后的属性 x_train_poly = poly.fit_transform(x_train) # x_test_poly = poly.transform(x_test) print(x_train_poly.shape) print(x_test_poly.shape) # 构建模型 # linear = LinearRegression(fit_intercept=True) # lasso回归:是线性回归+L1正则; alpha:代表正则化项的占比; fit_intercept: 一个布尔值,制定是否需要计算b值, # lasso = Lasso(alpha=0.1, fit_intercept=True) # Ridge回归:是线性回归+L2正则; alpha:代表正则化项的占比; fit_intercept: 一个布尔值,制定是否需要计算b值 ridge = Ridge(alpha=100000, fit_intercept=True) # 模型训练 # lasso.fit(x_train_poly, y_train) ridge.fit(x_train_poly, y_train) print('-' * 100) # print(lasso.coef_) print(ridge.coef_) print('\n') # print(lasso.intercept_) print(ridge.intercept_) # linear.fit(x_train_poly, y_train) # print(linear.coef_) # print(linear.intercept_) # 预测 # y_test_hat = lasso.predict(x_test_poly) y_test_hat = ridge.predict(x_test_poly) print('-' * 100) # linear.predict() # 打分 # print(lasso.score(x_train_poly, y_train)) # print(lasso.score(x_test_poly, y_test)) print(ridge.score(x_train_poly, y_train)) print(ridge.score(x_test_poly, y_test)) # 画图 plt.plot(range(len(x_test)), y_test, 'r', linewidth=2, label=u'测试集的原始值') plt.plot(range(len(x_test)), y_test_hat, 'b', linewidth=2, label=u'测试集的预测值') plt.legend(loc='upper right') # plt.save() plt.show()
E:\myprogram\anaconda\python.exe E:xx/线性回归操作/改变波士顿房屋预测价格欠拟合现象.py
(354, 13)
(152, 13)
(354, 377)
(152, 377)
----------------------------------------------------------------------------------------------------
[-8.07836071e-06 -1.49786519e-06 1.34028299e-06 1.36669956e-06
1.79202122e-06 4.55505033e-05 -9.47666631e-06 -1.43511592e-05
1.78642530e-05 -2.22772117e-04 -3.19801945e-05 1.05505851e-04
-1.69046321e-05 -9.98139701e-07 -4.09440898e-05 -1.47457843e-06
-5.94678746e-06 6.96108138e-06 -3.69084020e-04 -2.22214337e-05
-5.24475244e-05 -1.55684981e-03 -6.49190462e-05 -2.00262989e-03
-2.49660883e-04 -1.38185654e-04 9.80692370e-06 -1.09189430e-06
9.39914267e-05 1.06630182e-03 -2.36123860e-05 1.62593467e-04
6.47843457e-04 -2.12750319e-04 -1.58246222e-03 -1.05926764e-04
-8.57382544e-06 1.98935443e-05 2.11159869e-04 4.34378966e-05
-9.85954329e-05 6.55378427e-05 5.08828075e-04 -5.00840652e-06
1.13643610e-03 1.54275922e-04 -2.75172979e-06 5.16007903e-06
-3.43318534e-06 1.31683729e-05 -4.73676656e-06 -3.30820267e-05
4.43929104e-06 4.22281336e-04 4.06802422e-06 3.14459371e-05
1.16779401e-04 2.63412420e-06 6.41034485e-06 4.24675216e-04
5.66762597e-06 2.34710287e-04 2.10381129e-05 1.34626609e-03
-2.65381330e-05 3.07944091e-04 7.17118283e-03 2.50932723e-04
1.23841216e-02 1.05576212e-04 -7.73644900e-04 7.19852291e-04
-8.54283200e-04 -7.01036295e-04 1.65276074e-03 1.91408948e-03
-1.37296216e-05 -4.05770249e-03 -1.84064201e-04 -1.61370684e-03
-2.46430600e-04 2.35166477e-03 7.32314787e-05 5.28437782e-03
1.55167320e-04 -4.31666648e-03 -3.28488954e-04 -1.02217343e-03
-9.70015973e-03 -3.86099324e-04 -6.16091871e-04 -2.83097521e-04
-4.17470442e-05 -1.86516239e-05 2.65659131e-04 -2.10295344e-03
3.11375253e-04 -1.10646776e-04 6.05801543e-03 8.04419054e-05
-3.84145911e-03 -5.05920334e-04 5.69264360e-05 -3.67228035e-05
5.97985813e-04 1.29458697e-03 -8.88419832e-05 1.30764148e-04
2.28199478e-03 -9.56349648e-05 -1.91520633e-03 -2.32408403e-03
-2.90517109e-06 -6.97312517e-05 -5.54797939e-06 2.87816982e-05
7.51831977e-05 1.56087820e-03 -1.67798879e-05 -1.98710539e-03
-1.30825619e-04 3.22125312e-05 -7.06738640e-04 8.52865624e-05
-1.58343213e-04 -3.14192097e-03 -9.29926164e-05 1.58742903e-03
-2.12047920e-04 -8.00500620e-03 4.90074007e-04 -6.66367930e-04
2.22190108e-03 2.84481213e-04 -1.00610028e-03 8.58236555e-04
-9.00645260e-03 -7.29151794e-05 3.77162405e-05 -2.45833586e-04
-1.00395916e-05 4.67130972e-04 -3.48650921e-05 1.43502510e-04
7.29502488e-05 5.88307485e-04 -4.88078238e-04 -4.30831855e-06
-5.32096860e-04 -6.64988056e-04 4.11101669e-03 -2.44167219e-03
2.53286106e-05 2.58799758e-05 2.05206109e-03 -3.37254026e-03
-5.47496629e-05 -9.37720153e-04 1.19996026e-04 -2.23243373e-03
-1.36919231e-04 -4.64791022e-04 7.00646290e-04 -1.02784276e-04
-4.05556240e-03 2.99416208e-04 -7.35258640e-04 -5.56671704e-07
3.69396165e-05 -7.21725801e-04 1.25713104e-04 5.46295696e-04
-1.47252790e-03 -8.19399632e-04 9.70153126e-04 -1.19272849e-03
1.15653536e-04 3.22880314e-03 -2.23082172e-04 2.76102822e-04
1.43593339e-03 -3.04506404e-04 -1.42936415e-03 -8.99310769e-05
1.05196011e-03 -3.62429308e-03 2.91845822e-03 -2.58290408e-05
-1.50809257e-03 1.61597377e-04 -3.73947007e-03 2.75872462e-04
-1.69672149e-04 3.22613058e-05 -8.95907727e-05 -4.21060786e-05
-1.04525604e-04 1.39109617e-03 -9.05541043e-05 1.17723625e-03
3.80590770e-05 2.52266729e-04 -4.63808004e-04 1.89836264e-03
2.26540153e-04 -2.38773392e-03 3.36197393e-05 7.96374916e-07
-6.65298957e-05 7.63053365e-06 -9.27753089e-04 1.92121771e-04
-6.08118029e-05 -9.12048797e-05 7.30280540e-04 9.93845506e-05
4.16893531e-05 6.73197307e-05 2.05758842e-05 -6.69262536e-04
-3.00462573e-04 1.17151300e-04 1.86413717e-04 2.23343790e-04
-6.89002142e-05 4.03695083e-03 2.38290094e-04 -1.00717705e-03
4.07615987e-04 5.91315147e-03 1.43259624e-04 -2.95522028e-04
-7.74657294e-04 -8.31739307e-04 -5.18373927e-04 -4.31420431e-04
-1.23023401e-03 -5.05160348e-04 2.39679292e-05 -5.66012076e-05
-6.46695878e-05 -5.38639860e-04 9.32970251e-04 1.15843900e-03
-8.16566285e-04 -6.95068512e-04 3.79805005e-03 -1.75697404e-03
6.26840602e-05 1.11742671e-03 1.23455083e-05 -2.79347011e-04
3.50399700e-05 -2.26346616e-04 -1.34885804e-04 5.67729836e-03
-1.10538323e-04 -1.89184239e-05 -2.90817768e-04 6.99105362e-07
-1.48605252e-05 -1.19638797e-03 -4.63214766e-05 -1.07355891e-03
-4.89610310e-05 -7.61929417e-05 7.52509500e-05 -5.42181972e-04
-8.06074620e-03 -2.58489692e-04 1.32328737e-03 -2.96401788e-05
2.92546745e-04 -5.12434914e-04 5.19216773e-04 -1.15962447e-04
-4.05172581e-04 -2.38024991e-04 7.54451330e-05 3.72747869e-03
9.56969061e-05 4.16496139e-03 1.61904475e-04 1.18541652e-03
-1.22212358e-04 -2.02371634e-03 7.47259645e-04 -1.55828397e-03
1.32947145e-04 -4.31299483e-04 -1.62983469e-04 6.95430302e-04
6.31578472e-04 9.83067537e-04 5.81334738e-05 1.14352415e-04
5.19005580e-03 2.10010865e-04 5.20944490e-03 3.24576589e-04
1.31953696e-03 -1.70854003e-03 -2.13514547e-03 7.51658551e-04
-6.98066965e-07 2.54665234e-03 2.79724882e-04 6.22250425e-03
6.13582670e-05 1.77676322e-03 2.13040674e-04 -2.64480916e-03
-9.24875263e-05 -1.20457706e-03 -2.73885283e-04 3.11123680e-03
7.18843227e-05 2.66917423e-03 -4.28403328e-03 8.97016733e-05
2.32140406e-03 3.39920051e-04 5.22342054e-04 1.12558302e-04
-4.44469114e-03 7.78362554e-05 -4.02729478e-03 1.68558886e-03
4.54809375e-03 -6.39096128e-04 -3.38847643e-03 5.24030834e-04
9.26213694e-05 1.85575864e-03 -6.77395616e-04 2.22396462e-03
-1.27435539e-03 -1.71562693e-05 -1.89575871e-04 1.81018468e-03
3.13105498e-04 -1.51975235e-04 -8.31783149e-04 -3.92063940e-04
4.42171060e-03 1.27218142e-04 -9.73690202e-04 9.60285475e-06
3.52389813e-04 1.03812694e-04 -3.11864018e-03 1.36558988e-04
-5.52275580e-06 1.46430095e-04 -7.46973089e-05 -1.05896536e-03
5.39654919e-05 -8.90727711e-04 2.03045430e-04 6.71911630e-04
1.64706695e-03 -1.24236755e-03 -1.40077256e-07 1.86795780e-03
7.30634969e-04 -3.15267457e-03 -1.01794546e-03 1.79165725e-03
-7.41036205e-06 8.03906202e-05 -1.62922482e-03 5.55350511e-04
4.49712993e-04 3.27613521e-05 -1.19142448e-04 -3.15768213e-05
4.25760446e-04]
32.681649728725496
----------------------------------------------------------------------------------------------------
0.9612319479879345
0.7804761389229389
Process finished with exit code 0