Я пытаюсь построить линию регрессии на диаграмме рассеяния, основываясь на моих предсказанных данных.
Проблема в том, что я должен получить одну линию, но на моем графике много линий, соединяющих все точки (см. Рисунок) https://i.stack.imgur.com/VF483.png
После прогнозирования Выбросы CO2, основанные на других данных, я строю график размера двигателя в сравнении с фактическими данными теста (выбросы СО2), и я пытаюсь построить график зависимости размера двигателя от прогнозируемых данных теста, но я не могу .
Вот код:
#import the dataset
df = pd.read_csv('FuelConsumptionCo2.csv')
cols = ['ENGINESIZE','CYLINDERS','FUELTYPE','FUELCONSUMPTION_CITY','FUELCONSUMPTION_HWY','FUELCONSUMPTION_COMB','CO2EMISSIONS']
#create new dataset with colums neeeded
cdf = df[cols]
#dummies for the categorigal column fueltype
cdf = pd.get_dummies(cdf,'FUELTYPE')
#the features without the target column
selFeatures = list(cdf.columns.values)
del selFeatures[5]
#split the dataset for fitting
X_train, X_test, Y_train, Y_test = train_test_split(cdf[selFeatures], cdf['CO2EMISSIONS'], test_size=0.5)
#regression model
clfregr = linear_model.LinearRegression()
#train the model
clfregr.fit(X_train, Y_train)
#predict the values
train_pred = clfregr.predict(X_train)
test_pred = clfregr.predict(X_test)
#regression line for the predicted in test
plt.scatter(X_test.ENGINESIZE,Y_test, color='gray')
plt.plot(X_test.ENGINESIZE, test_pred, color='red', linewidth=1)
plt.show()