今天做这道题
做题流程
先说一下要用的包和流程
还是跟线性回归一样
首先导入数据
import pandas as pdpandas导入数据
然后可视化
from matplotlib import pyplot as plt一样的使用plt去画图
建立模型训练
from sklearn.linear_model import LogisticRegression
这次不是线性回归了,所以用的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()