赞
踩
import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression class LineRegression: def __init__(self): pass @staticmethod def line_regression(): # 训练数据 x = np.random.uniform(-3, 3, size=100) # 构建一元关系 y = 0.5 + x**2+x+2+np.random.normal(0, 1, size=100) # 构建线性回归模型 line_regression = LinearRegression() # 将训练特征转换为 1行100列特征,对应 实际y值得个数 train_data = x.reshape(-1, 1) line_regression.fit(X=train_data, y=y) # 给出预测值 y_predict = line_regression.predict(train_data) # plt展示 y与 x之间的关系 plt.scatter(x, y) # plt展示 实际y值与预测值的偏差 plt.scatter(x, y_predict, edgecolors='r') plt.show() if __name__ == "__main__": PolyRegression.line_regression()
import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression class PolyRegression: def __init__(self): pass @staticmethod def poly_regression(): # 训练数据 x = np.random.uniform(-3, 3, size=100) # 构建一元关系 y = 0.5 + x**2+x+2+np.random.normal(0, 1, size=100) # 构建线性回归模型 line_regression = LinearRegression() # 将训练特征转换为 1行100列特征,对应 实际y值得个数 train_data = x.reshape(-1, 1) # 使用多项式,先创建一个新特征 # (train_data**2).reshape # 创建一个新特征 new_feature_data = np.hstack([train_data, train_data**2]) # 构建模型 line_regression.fit(X=new_feature_data, y=y) # 给出预测值 y_predict = line_regression.predict(new_feature_data) # plt展示 y与 x之间的关系 plt.scatter(x, y) # plt展示 实际y值与预测值的偏差 plt.scatter(np.sort(x), y_predict[np.argsort(x)], edgecolors='r') plt.show() # 输出模型指标,斜率,截距项协方差 print(line_regression.coef_, line_regression.intercept_) if __name__ == "__main__": PolyRegression.poly_regression()
import numpy as np import matplotlib.pyplot as plt from sklearn.preprocessing import PolynomialFeatures from sklearn.linear_model import LinearRegression class PolyRegression: def __init__(self): pass @staticmethod def poly_regression(): # 1.预处理训练数据 x = np.random.uniform(-3, 3, size=100) # 构建一元关系 y = 0.5 + x**2+x+2+np.random.normal(0, 1, size=100) # 将训练特征转换为 1行100列特征,对应 实际y值得个数 train_data = x.reshape(-1, 1) # 构建线性回归模型,degree表示使用多少幂次(多项式的最高次数) sklearn_poly_regression = PolynomialFeatures(degree=2) # 拟合数据 sklearn_poly_regression.fit(train_data) # 转换数据 X2 = sklearn_poly_regression.transform(X=train_data) # X2 集合的形式 为100行 3列 print(X2.shape) # 查看前5行,所有列的数据,:5指前5行数据,所有列数据 # 第一列为0次方,第二列是一次项系数(原来数据样本特征),第三列是二次线系数 print(X2[:5, :]) # 2.模型训练 reg = LinearRegression() reg.fit(X=X2, y=y) # 给出预测值 y_predict = reg.predict(X2) # plt展示 y与 x之间的关系 plt.scatter(x, y) # plt展示 实际y值与预测值的偏差 plt.scatter(np.sort(x), y_predict[np.argsort(x)], edgecolors='r') plt.show() if __name__ == "__main__": PolyRegression.poly_regression()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。