这样一个式子
y = ax+b
y = 0.5x+6 + 随机数噪音
数据分为训练集和测试集
train_set 70%
test_set 30%
直接上代码
import random
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import accuracy_score, mean_squared_error, r2_score,mean_squared_log_error
from sklearn.utils.multiclass import type_of_target
import matplotlib.pyplot as plt
plt.figure()
#data prepare
X = np.linspace(1,200,100)
y = 0.5*X+6+np.random.normal(0,3,100)
# plt.scatter(x=X,y=y, marker='o',c='b')
# plt.show()
#model establish
model = LinearRegression()
X = X.reshape([-1,1])
# y = y.reshape([-1,1])
X_train = X[:70]
y_train = y[:70]
X_test = X[70:]
y_test = y[70:]
model.fit(X_train,y_train)
y_pred = model.predict(X)
# check y_ture data_type,type:continuous
print(type_of_target(y_test))
# 分类采用这个, 线性回归使用MSE或R2
# acc = accuracy_score(y_test,y_pred)
mse = mean_squared_log_error(y,y_pred)
r2 = r2_score(y,y_pred)
print(mse,r2)
y_pred2 = model.predict(X_test)
print(model.coef_,model.intercept_)
plt.scatter(x=X,y=y_pred,c='b',marker='x')
plt.scatter(x=X,y=y,c='r',marker='o')
plt.scatter(x=X_test,y=y_pred2,c='g')
plt.show()
得出结果:
C:\Users\e0080855\AppData\Local\Continuum\anaconda3\python.exe C:/data/E0080855/test/machine_ln/ml1.py
continuous
0.007628725703060707
0.9896478576033121
[0.49886533] 6.390841972813895
得出图像
红点代表原数据样本,绿点代表模型预测结果