如何将ML模型应用于数据集中的新行



假设我有一个数据集并构建一个ML模型。这个数据集每周更新一次,之后,我想在他更新时,我的模型预测出现的新行,并将其附加到原始数据集。我是怎么做的?

这就是我尝试的:

import pandas as pd
import numpy as np
import sklearn
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.svm import SVC
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/iris.csv"
names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']
df = pd.read_csv(url, names=names)
df
array = df.values
X = array[:,0:4]
y = array[:,4]
X_train, X_validation, Y_train, Y_validation = train_test_split(X, y, test_size=0.20, random_state=1)

我跳过了一些步骤来检查不同型号的分数。

model = SVC(gamma='auto')
model.fit(X_train, Y_train)
predictions = model.predict(X_validation)

在这里,我添加了新的数据来进行测试:

new_data = [[5.9, 3.0, 5.7, 1.5], [4.8, 2.9, 3.0, 1.2]]
df2 = pd.DataFrame(new_data,  columns =  ["sepal-length", "sepal-width", "petal-length", "petal-width"])
df3 = df.append(df2, ignore_index=True)
df3
array2 = df3.values
X2 = array2[:,0:4]
predict = model.predict(X2)
predict
df3['pred'] = predict
def final_class(row):
if pd.isnull(row['class']):
return row['pred']
else:
return row['class']
df3['final_class'] = df3.apply(lambda x: final_class(x), axis=1)
df3

有效,但我认为这不是最好的方法。有人能帮我吗?

这是正确的方法。

你也可以这样做,只在新的数据集上预测&将预测结果附加到最初预测的数据集。

相关内容

最新更新