Если вы хотите предсказать типы Crop
, это проблема классификации.Вы могли бы начать с ознакомления с некоторыми из классификаторов в Scikit-Learn, которые довольно просты в использовании.Вы также можете получить хорошее представление о том, как действовать из примеров в документации.
- Вот краткий набросок о том, как действовать
Во-первых, вам придется выполнить некоторую предварительную обработку.Вы можете начать с извлечения информации из нижних верхних границ из диапазонов 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 ), и прогнозируйте некоторые тестовые данные X_test
, полученные путем разделения ваших данных на train
и test`:
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)