Сделай это сегодня
Процесс постановки вопросов
Давайте поговорим о пакетах и процессах, которые следует использовать в первую очередь.
Все так же, как линейная регрессия
Сначала импортируйте данные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()