133 KiB
133 KiB
In [1]:
import sys
sys.path.append('./')In [2]:
## preparation
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
%matplotlib inlineIn [3]:
iris_data = sns.load_dataset('iris')
x_new = 4.8
y_new = 2.2
fig, ax = plt.subplots(figsize=(6,6))
sns.scatterplot(x='sepal_length',
y='sepal_width',
data=iris_data,
hue='species',
palette=['darkorange', 'green','darkviolet'])
ax.add_artist(plt.Circle((x_new, y_new), radius = 0.03, color='black', fill=True))
ax.add_artist(plt.Circle((x_new, y_new), radius = 0.35, color='black', fill=False))
plt.xlim(4, 8)
plt.ylim(1.5, 5.5);In [4]:
## decision tree
X_iris = iris_data.drop('species', axis=1)
y_iris = iris_data.species
from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier(
min_impurity_decrease=0.05,
random_state=1234)
model.fit(X_iris[['sepal_length', 'sepal_width']], y_iris)
from sklearn.tree import plot_tree
import matplotlib.pyplot as plt
plt.figure(figsize=(6, 6))
plot_tree(model,
feature_names=X_iris.columns,
class_names=model.classes_,
filled=True); # Adds color accoding to classIn [5]:
## load data
data = sns.load_dataset('iris')
## features - target - split
X = data.drop('species', axis=1)
y = data.species
## train - test - split
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
X,
y,
train_size=2 / 3,
random_state=1234)
## define and train model
from sklearn.multiclass import OneVsRestClassifier
from sklearn.linear_model import LogisticRegression
model = OneVsRestClassifier(LogisticRegression(random_state=1234)).fit(X_train, y_train)
## predictions
pred = model.predict(X_test)
pred_proba = model.predict_proba(X_test)
## results
print(pd.DataFrame(
pred_proba,
pred
).head(10))0 1 2 versicolor 0.013721 0.632638 0.353641 versicolor 0.008735 0.613221 0.378044 virginica 0.000446 0.339460 0.660093 setosa 0.873263 0.126729 0.000008 versicolor 0.082264 0.790321 0.127416 setosa 0.809556 0.190433 0.000011 setosa 0.872754 0.127239 0.000007 setosa 0.842567 0.157429 0.000004 versicolor 0.051173 0.812098 0.136729 virginica 0.000016 0.376987 0.622998
In [6]:
## load data
data = sns.load_dataset('iris')
## features - target - split
X = data.drop('species', axis=1)
y = data.species
## train - test - split
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
X,
y,
train_size=2 / 3,
random_state=1234)
## define and train model
from sklearn.multiclass import OneVsOneClassifier
from sklearn.linear_model import LogisticRegression
model = OneVsOneClassifier(LogisticRegression(random_state=1234)).fit(X_train, y_train)
## predictions
pred = model.predict(X_test)
print(pred)['versicolor' 'versicolor' 'virginica' 'setosa' 'versicolor' 'setosa' 'setosa' 'setosa' 'versicolor' 'virginica' 'versicolor' 'setosa' 'virginica' 'versicolor' 'setosa' 'versicolor' 'virginica' 'setosa' 'virginica' 'versicolor' 'versicolor' 'versicolor' 'versicolor' 'versicolor' 'virginica' 'setosa' 'virginica' 'versicolor' 'virginica' 'setosa' 'versicolor' 'virginica' 'setosa' 'virginica' 'virginica' 'setosa' 'setosa' 'setosa' 'setosa' 'versicolor' 'setosa' 'versicolor' 'setosa' 'virginica' 'virginica' 'setosa' 'virginica' 'virginica' 'virginica' 'virginica']