Итак, у меня есть алгоритм машинного обучения, точность которого составляет 20%.
Это не так уж и много, но я хотел бы знать, насколько близок мой алгоритм в среднем.
Так что, если он предсказал значение 69, а реальное значение в данных тестирования было 68, и у него был этот «запас» погрешности во всем, тогда я был бы в порядке с его использованием для цели, которую яя использую его для заполнения недостающих данных в наборе данных.
Есть ли какой-нибудь простой способ сделать это?
Фрагмент моего кода:
def predict_score_industry(df):
coi = ['score_teaching',
'score_research',
'score_citation',
'score_int_outlook',
]
not_nans = df['score_industry'].notnull()
df_notnans = df[not_nans]
x = np.array(df_notnans[coi])
y = np.array(df_notnans['score_industry'])
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25)
clf = LinearRegression()
clf.fit(x_train, y_train)
print("score_industry: ", clf.score(x_test, y_test))
df_nans = df.loc[~not_nans].copy()
df_nans['score_industry'] = clf.predict(df_nans[coi])
df.score_industry.fillna(df_nans.score_industry, inplace=True)
return df
Он в основном принимает все незаполненные значения и прогнозирует их, фрейм данных, который он читает, выглядит следующим образом:
> print(df.info())
Data columns (total 15 columns):
university_name 2884 non-null object
country 2884 non-null object
ranking 2884 non-null int64
no_student 2884 non-null int64
no_student_p_staff 2884 non-null float64
pct_intl_student 2884 non-null float64
year 2884 non-null int64
score_overall 2884 non-null float64
score_teaching 2884 non-null float64
score_research 2884 non-null float64
score_citation 2884 non-null float64
score_industry 2884 non-null float64
score_int_outlook 2884 non-null float64
male 2884 non-null float64
female 2884 non-null float64