用Python Sklearn包做线性回归:
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn import metrics
import matplotlib.pyplot as plt
# 数据集
X=pd.read_csv('X8.csv')
data_y=pd.read_csv('y8.csv')
Y=np.ravel(data_y)
X_test=pd.read_csv('X8_test.csv')
data_y_test=pd.read_csv('y8_test.csv')
Y_test=np.ravel(data_y_test)
#训练模型
linreg=LinearRegression()
model=linreg.fit(X,Y)
print(model)
print(linreg.intercept_)
print(linreg.coef_)
#predict
y_pred=linreg.predict(X_test)
print(y_pred)
print(Y_test)
print("RMSE:", np.sqrt(metrics.mean_squared_error(Y_test, y_pred)))
#ROC曲线
plt.figure()
plt.plot(range(len(y_pred)),y_pred,'b',label="predict")
plt.plot(range(len(y_pred)),Y_test,'r',label="test")
plt.legend(loc="upper right")
plt.xlabel("the number of samples")
plt.ylabel("value of adsorption energy")
plt.show()