Как разделить данные для обучения и тестирования?Возможна ли перекрестная проверка?М-оценка или МНК? - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть 26 наблюдений, чтобы применить простую линейную регрессию, но когда я делю данные на 70% для поезда и 30% для данных теста, обычно результаты для данных теста (квадрат R / значение P) не являются хорошими.Это потому, что образцы для теста слишком малы?8 или 9 наблюдения не достаточно?Что я должен делать ?нет случайного состояния, поэтому он выбирает данные случайным образом. Также интересно, как выбрать между OLS и M-оценкой (которая более устойчива к выбросам, которые я имею в моей проверке данных ниже, поскольку на переменную B влияют другие переменные, кроме A)для моего набора данных.это код, который я сделал до сих пор и пытаюсь сделать перекрестную проверку в данных поезда.Возможно ли это в соответствии с количеством наблюдений, которые у меня есть?

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import statsmodels.api as sm
from scipy import stats
data = pd.read_excel("C:\\Users\\AchourAh\\Desktop\\PL32_PMM_03_09_2018_SP_Level.xlsx",'Sheet1') 
data1 = data.fillna(0) #Replace null values of the whole dataset with 0
print(data1)
X = data1.iloc[0:len(data1),1].values.reshape(-1, 1) 
Y = data1.iloc[0:len(data1),2].values.reshape(-1, 1)
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size =0.33)
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, Y_train)
plt.scatter(X_train, Y_train, color = 'red')
plt.plot(X_train, regressor.predict(X_train), color = 'blue')
plt.title('SP00114585')
plt.xlabel('COP COR Quantity')
plt.ylabel('PAUS Quantity')
plt.show()
plt.scatter(X_test, Y_test, color = 'red')
plt.plot(X_train, regressor.predict(X_train), color = 'blue')
plt.title('SP00114585')
plt.xlabel('COP COR Quantity')
plt.ylabel('PAUS Quantity')
plt.show()
X2 = sm.add_constant(X_train)
est = sm.OLS(Y_train, X2)
est2 = est.fit()
print(est2.summary())
X3 = sm.add_constant(X_test)
est3 = sm.OLS(Y_test, X3)
est4 = est3.fit()
print(est4.summary())

Это пример данных, которые у меня есть, и моя цель - не предсказать хорошую модель, а описать влияние переменной A на BКроме того, при анализе всех данных вместе результаты всегда лучше, чем разделение данных

   Variable A   Variable B
      87.000    573.000
      90.000    99.000
     258.000    339.000
     180.000    618.000
           0    69.000
      90.000    621.000
      90.000    231.000
     210.000    345.000
     255.000    255.000
       0              0
     213.000    372.000
     405.000    405.000
     162.000    162.000
     405.000    405.000
           0    186.000
     105.000    252.000
     474.000    501.000
     531.000    531.000
     549.000    549.000
     525.000    525.000
     360.000    660.000
     546.000    546.000
     645.000    645.000
     561.000    600.000
     978.000    1.104.000
     960.000    960.000

Кроме того, выведите результаты с помощью SKlearn и проанализируйте результаты на основе statsmodels.Могу ли я предположить, что отображаемые результаты представлены значениями из-за statsmodels или есть что-то, что нужно изменить в коде?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...