mirror of
https://github.com/fenago/data-science.git
synced 2026-07-25 23:51:28 +00:00
7.1 KiB
7.1 KiB
In [ ]:
import pandas as pdIn [ ]:
mushrooms = pd.read_csv('./agaricus-lepiota.data', header=None)In [ ]:
mushroomsIn [ ]:
y_raw = mushrooms.iloc[:,0]
X_raw = mushrooms.iloc[:,1:]In [ ]:
y = (y_raw == 'p') * 1In [ ]:
yIn [ ]:
from sklearn import preprocessingIn [ ]:
encoder = preprocessing.OneHotEncoder()
encoder.fit(X_raw)
X = encoder.transform(X_raw).toarray()In [ ]:
XIn [ ]:
from sklearn import ensembleIn [ ]:
rfc = ensemble.RandomForestClassifier(n_estimators=100, random_state=150)In [ ]:
from sklearn import model_selection
grid = {
'criterion': ['gini', 'entropy'],
'max_features': [2, 4, 6, 8, 10, 12, 14]
}
gscv = model_selection.GridSearchCV(estimator=rfc, param_grid=grid, cv=5, scoring='accuracy')
gscv.fit(X,y)
results = pd.DataFrame(gscv.cv_results_)
results.sort_values('rank_test_score', ascending=True).head(10)In [ ]:
(
results
.sort_values('rank_test_score', ascending=False)
.loc[:,['params','mean_test_score']]
.head(10).plot.barh(x='params', xlim=(0.8))
)In [ ]:
from scipy import stats
max_features = X.shape[1]
param_dist = {
'criterion': ['gini', 'entropy'],
'max_features': stats.randint(low=1, high=max_features)
}
rscv = model_selection.RandomizedSearchCV(estimator=rfc, param_distributions=param_dist, n_iter=50, cv=5, scoring='accuracy', random_state=100)
rscv.fit(X,y)
results = pd.DataFrame(rscv.cv_results_)
results.sort_values('rank_test_score', ascending=True).head(10)In [ ]:
results.loc[:,'params'] = results.loc[:,'params'].astype(str)
(
results.sort_values('rank_test_score', ascending=False)
.loc[:,['params','mean_test_score']]
.drop_duplicates()
.head(10)
.plot.barh(x='params', xlim=(0.8))
)