Sei sulla pagina 1di 2

'''

=========================================================
Logistic Regression Classifier
=========================================================
'''

import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model, datasets
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn import metrics
import matplotlib.pyplot as plt
import matplotlib as mpl
from sklearn import preprocessing
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from IPython.display import display

trainFile = input('please provide iris trian data file path \n')

print (trainFile)
dataset = pd.read_csv(trainFile)
dataset['Sepal.Length'] = dataset['Sepal.Length'].astype(np.float)
dataset['Sepal.Width'] = dataset['Sepal.Width'].astype(np.float)
dataset['Petal.Length'] = dataset['Petal.Length'].astype(np.float)
dataset['Petal.Width'] = dataset['Petal.Width'].astype(np.float)

columns1 = ['Sepal.Length', 'Sepal.Width']


columns2 = ['Species']
X = pd.DataFrame(dataset, columns=columns1)

Y = pd.DataFrame(dataset,columns=columns2)

Y=Y['Species'].map({'setosa':0, 'versicolor':1,'virginica':2})

train_features = np.array(X)
train_outcomes = np.array(Y)
'''
# split the features and outcomes
train_outcomes = data['Species']
print(train_outcomes)
train_features = data['Sepal.Length','Sepal.Width','Petal.Length','Petal.Width']
print(train_features)
#display(train_features.head())
'''

# training
lr = linear_model.LogisticRegression(C=1e5)
lr.fit(train_features, train_outcomes.ravel())

# visualization
N, M = 500, 500
x1_min,x1_max = train_features[:,0].min(),train_features[:,0].max()
x2_min, x2_max = train_features[:, 1].min(), train_features[:, 1].max()
t1 = np.linspace(x1_min, x1_max, N)
t2 = np.linspace(x2_min, x2_max, M)
x1, x2 = np.meshgrid(t1, t2)
x_test = np.stack((x1.flat, x2.flat), axis=1)

# result
y_hat = lr.predict(train_features)

y = train_outcomes.reshape(-1)
result = y_hat == train_outcomes
# print(y_hat)
# print(result)
acc = np.mean(result)
print('Logistic Regression Classifier:- Accuracy: %.2f%%' % (100 * acc))

# visualization
cm_light = mpl.colors.ListedColormap(['#77E0A0', '#FF8080', '#A0A0FF'])
cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])
y_hat = lr.predict(x_test)
y_hat = y_hat.reshape(x1.shape)
plt.pcolormesh(x1, x2, y_hat, cmap=cm_light)
plt.scatter(train_features[:, 0], train_features[:, 1], c=train_outcomes, \
edgecolors='k', s=50, cmap=cm_dark)
plt.xlabel('petal length')
plt.ylabel('petal width')
plt.xlim(x1_min, x1_max)
plt.ylim(x2_min, x2_max)
plt.grid()
plt.show()

Potrebbero piacerti anche