|
import numpy as np |
|
import pandas as pd |
|
import matplotlib.pyplot as plt |
|
import seaborn as sns |
|
from sklearn.metrics import confusion_matrix,classification_report,accuracy_score |
|
from sklearn.model_selection import train_test_split, GridSearchCV,RandomizedSearchCV |
|
from sklearn.preprocessing import OrdinalEncoder,LabelEncoder,OneHotEncoder |
|
from sklearn.ensemble import RandomForestClassifier |
|
import pickle |
|
def crop_reco(): |
|
|
|
|
|
df = pd.read_csv('Crop_recommendation.csv') |
|
|
|
from sklearn.preprocessing import LabelEncoder |
|
le = LabelEncoder() |
|
df['label'] = le.fit_transform(df['label']) |
|
|
|
class_labels = le.classes_ |
|
|
|
x = df.drop('label',axis=1) |
|
y = df['label'] |
|
|
|
X_train,X_test,y_train,y_test = train_test_split(x,y,test_size=0.10,shuffle=True) |
|
|
|
rf = RandomForestClassifier() |
|
param_grid = {'n_estimators':np.arange(50,200), |
|
'criterion':['gini','entropy'], |
|
'max_depth':np.arange(2,25), |
|
'min_samples_split':np.arange(2,25), |
|
'min_samples_leaf':np.arange(2,25)} |
|
|
|
rscv_model = RandomizedSearchCV(rf,param_grid, cv=5) |
|
rscv_model.fit(X_train,y_train) |
|
|
|
best_rf_model = rscv_model.best_estimator_ |
|
pickle.dump(best_rf_model, open("crop_recommendation.pickle","wb")) |
|
|
|
|