如果你想要预测Crop的类型,这是一个分类问题。您可以先看看 Scikit-Learn 中的一些 classifiers,它们使用起来非常简单。您还可以从文档中的示例中很好地了解如何进行操作。
首先,您必须进行一些预处理。您可以先从pH-values 范围内的下限和上限中提取信息,例如:
s = df['pH-values'].str.strip('(&)').str.split('-')
X_df = pd.DataFrame(s.values.tolist(), columns = ['low','high'])
X_df['high'] = X_df.high.str.rstrip('.').astype(float)
X_df['low'] = X_df.low.astype(float)
print(X_df)
low high
0 5.0 6.5
1 5.5 6.5
2 5.5 7.0
3 5.5 7.5
4 6.0 6.7
5 5.5 7.5
6 5.5 7.0
下一步是将训练和测试数据提供给您决定使用的任何分类器(例如RandomForestClassifier),并预测通过将您的数据拆分为train 和测试`:
from sklearn.model_selection import train_test_split
y = df.Crop.values
X = X_df.values
# Split in train and test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
# Fit the classifier
rf = RandomForestClassifier()
model = rf.fit(X_train, y_train)
# Predict using X_test
y_pred = model.predict(X_test)
这会给你一些东西:
print(y_pred)
array(['Carrot', 'Carrot', 'Cauliflower'], dtype=object)
最后检查您使用定义的模型获得的准确性。为此,您可以使用accuracy_score:
from sklearn.metrics import accuracy_score
accuracy_score(y_test, y_pred, normalize=False)