Saya mencoba melakukan regresi linier sederhana dengan python dengan variabel x adalah jumlah kata dari deskripsi proyek dan nilai y adalah kecepatan pendanaan dalam beberapa hari.
Saya agak bingung karena root mean square error (RMSE) adalah 13,77 untuk pengujian dan 13,88 untuk data pelatihan. Pertama, bukankah RMSE harus antara 0 dan 1? Dan kedua, bukankah seharusnya RMSE untuk data pengujian lebih tinggi daripada data pelatihan? Jadi saya rasa, saya melakukan kesalahan tetapi tidak yakin di mana kesalahannya.
Selain itu, saya perlu mengetahui koefisien bobot untuk regresi tetapi sayangnya tidak tahu cara mencetaknya karena agak tersembunyi di dalam metode sklearn. Adakah yang bisa membantu di sini?
Inilah yang saya miliki sejauh ini:
import numpy as np
import matplotlib.pyplot as plt
import sqlite3
from sklearn.model_selection import train_test_split
from sklearn import linear_model
con = sqlite3.connect('database.db')
cur = con.cursor()
# y-variable in regression is funding speed ("DAYS_NEEDED")
cur.execute("SELECT DAYS_NEEDED FROM success")
y = cur.fetchall() # list of tuples
y = np.array([i[0] for i in y]) # list of int # y.shape = (1324476,)
# x-variable in regression is the project description length ("WORD_COUNT")
cur.execute("SELECT WORD_COUNT FROM success")
x = cur.fetchall()
x = np.array([i[0] for i in x]) # list of int # x.shape = (1324476,)
# Get the train and test data split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=42)
# Fit a model
lm = linear_model.LinearRegression()
x_train = x_train.reshape(-1, 1) # new shape: (1059580, 1)
y_train = y_train.reshape(-1, 1) # new shape: (1059580, 1)
model = lm.fit(x_train, y_train)
x_test = x_test.reshape(-1, 1) # new shape: (264896, 1)
predictions_test = lm.predict(x_test)
predictions_train = lm.predict(x_train)
print("y_test[5]: ", y_test[5]) # 14
print("predictions[5]: ", predictions_test[5]) # [ 12.6254537]
# Calculate the root mean square error (RMSE) for test and training data
N = len(y_test)
rmse_test = np.sqrt(np.sum((np.array(y_test).flatten() - np.array(predictions_test).flatten())**2)/N)
print("RMSE TEST: ", rmse_test) # 13.770731326
N = len(y_train)
rmse_train = np.sqrt(np.sum((np.array(y_train).flatten() - np.array(predictions_train).flatten())**2)/N)
print("RMSE train: ", rmse_train) # 13.8817814595
Bantuan apa pun sangat dihargai! Terima kasih!
model.coef_
danmodel.intercept_
- person Umang Gupta   schedule 27.06.2018y
) berada di antara 0 dan 1 dan semua nilai prediksi juga antara 0 dan 1. RMSE data pengujian akan mendekati ke RMSE pelatihan (dan lebih rendah) jika Anda memiliki model yang terlatih. Akan lebih tinggi jika Anda memiliki model overfitted. Mungkin lebih rendah jika data pengujian Anda terlalu mudah untuk model tersebut. Anda mungkin menganggap ini berguna. - person Autonomous   schedule 27.06.2018