Искусственный интеллект — задачи классификации и логистическая регрессия — Code Combat (1)

Python

Сделай это сегодня

image.png

Процесс постановки вопросов

Давайте поговорим о пакетах и ​​процессах, которые следует использовать в первую очередь.

Все так же, как линейная регрессия

Сначала импортируйте данныеimport pandas as pdпанды импортируют данные

затем визуализируйтеfrom matplotlib import pyplot as pltТо же самое использовать plt для рисования

Обучение построению моделиfrom sklearn.linear_model import LogisticRegressionНа этот раз это не линейная регрессия, поэтому используется логистическая регрессия.

данные прогнозаimport numpy as npИспользуйте numpy для создания данных, которые необходимо предсказать

Модель оценкиfrom sklearn.metrics import accuracy_scoreОцените модель как раньше

Да, большинство из них такие же, как и раньше

Так что не говорите глупостей прямо коду.


import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# 导入数据及可视化
data = pd.read_csv('task1_data.csv')
data.head()
fig1 = plt.figure()
plt.scatter(data.loc[:, '尺寸1'], data.loc[:, '尺寸2'])
plt.title('chip size1-size2')
plt.xlabel('size1')
plt.ylabel('size2')
# plt.show()



# 建立筛选良品、次品的变量mask

mask = data.loc[:, 'y'] == 1
print(mask)
fig2 = plt.figure()
ok = plt.scatter(data.loc[:, '尺寸1'][mask], data.loc[:, '尺寸2'][mask])
ng = plt.scatter(data.loc[:, '尺寸1'][~mask], data.loc[:, '尺寸2'][~mask])
plt.title('chip size1-size2')
plt.xlabel('size1')
plt.ylabel('size2')
plt.legend((ok, ng), ('ok', 'ng'))
plt.show()


# x,y 赋值

x = data.drop(['y'], axis=1)
y = data.loc[:, 'y']
x.head()
y.head()


# 模型训练
model = LogisticRegression()
model.fit(x, y)


# 模型预测

y_predict = model.predict(x)
print(y)
print(y_predict)

accuracy = accuracy_score(y, y_predict)
print(accuracy)


# 测试样本

x_test = np.array([[1, 10]])

y_test_predict = model.predict(x_test)

print(y_test_predict)
print('ok' if y_test_predict==1 else 'ng')



print(model.intercept_)
print(model.coef_)

theta0 = model.intercept_[0]
theta1, theta2 = model.coef_[0][0], model.coef_[0][1]

print(theta0, theta1, theta2)


x1 = data.loc[:, '尺寸1']
x2_new = -(theta0 + theta1*x1)/theta2


# 最后加一个,画出决策边界

fig3 = plt.figure()
plt.scatter(data.loc[:, '尺寸1'], data.loc[:, '尺寸2'])
plt.title('chip size1-size2')
plt.xlabel('size1')
plt.ylabel('size2')
ok = plt.scatter(data.loc[:, '尺寸1'][mask], data.loc[:, '尺寸2'][mask])
ng = plt.scatter(data.loc[:, '尺寸1'][~mask], data.loc[:, '尺寸2'][~mask])
plt.title('chip size1-size2')
plt.plot(x1, x2_new)
plt.xlabel('size1')
plt.ylabel('size2')
plt.legend((ok, ng), ('ok', 'ng'))
plt.show()