import numpy as np
import matplotlib.pyplot as plt
import sklearn
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import LogisticRegression
import pandas as pd
from sklearn.metrics import accuracy_score
from sklearn.metrics import mean_squared_error,r2_score
data = pd.read_csv("./examdata.csv",encoding="gbk")
data.head()
x1 = data.loc[:,"Exam1"]
x2 = data.loc[:,"Exam2"]
x3 = data.drop(['Pass'],axis=1)
y = data.loc[:,"Pass"]
mask = data.loc[:,"Pass"]==1
x11 = np.array(x1).reshape(-1,1)
x22 = np.array(x2).reshape(-1,1)
LR = LogisticRegression()
LR.fit(x3,y)
y_predict = LR.predict(x3)
y_test = LR.predict([[40,100]])
print('ok'if y_test == 1 else 'ng')
accuray = accuracy_score(y,y_predict)
print(accuray)
# t0 = LR.intercept_
# t1,t2=LR.coef_[0][0],LR.coef_[0][1]
# x2_new = -(t0+t1*x1)/t2
x1_2 = x1*x1
x2_2 = x2*x2
x1_x2 = x1*x2
##创建二阶边界函数
x_new = {'x11':x1,'x22':x2,'x1_2 ':x1_2 ,'x2_2':x2_2,'x1_x2':x1_x2}
x_new = pd.DataFrame(x_new)
print(x_new)
LR2 = LogisticRegression()
LR2.fit(x_new,y)
# print(t0)
t0 = LR2.intercept_
t1 = LR2.coef_[0][0]
t2 = LR2.coef_[0][1]
t3 = LR2.coef_[0][2]
t4 = LR2.coef_[0][3]
t5 = LR2.coef_[0][4]
print(t1,t2)
print(t3,t4,t5)
y2_predict = LR2.predict(x_new)
print(y2_predict)
accuray2 = accuracy_score(y,y2_predict)
print(accuray2)
x1_new = x1.sort_values()#排序
print(x1_new)
a = t4
b = t5*x1_new + t2
c = t0 + t1 *x1_new + t3 *x1_new*x1_new
x2_new_2 = (-b+np.sqrt(b*b-4*a*c))/(2*a)
print(x2_new_2)
fig = plt.figure()
# # plt.subplot(1,2,1)
ok = plt.scatter(x1[mask],x2[mask])
ng = plt.scatter(x1[~mask],x2[~mask])
plt.legend((ok,ng),('ok','ng'))
plt.plot(x1_new,x2_new_2)
# # plt.subplot(1,2,2)
# # plt.scatter(x1,x2,c='b',marker="s")
# # plt.xlabel("test1")
# # plt.ylabel("test2")
plt.show()
结果展示:
数据:
Exam1 | Exam2 | Pass |
34.62365962 | 78.02469282 | 0 |
30.28671077 | 43.89499752 | 0 |
35.84740877 | 72.90219803 | 0 |
60.18259939 | 86.3085521 | 1 |
79.03273605 | 75.34437644 | 1 |
45.08327748 | 56.31637178 | 0 |
61.10666454 | 96.51142588 | 1 |
75.02474557 | 46.55401354 | 1 |
76.0987867 | 87.42056972 | 1 |
84.43281996 | 43.53339331 | 1 |
95.86155507 | 38.22527806 | 0 |
75.01365839 | 30.60326323 | 0 |
82.30705337 | 76.4819633 | 1 |
69.36458876 | 97.71869196 | 1 |
39.53833914 | 76.03681085 | 0 |
53.97105215 | 89.20735014 | 1 |
69.07014406 | 52.74046973 | 1 |
67.94685548 | 46.67857411 | 0 |
70.66150955 | 92.92713789 | 1 |
76.97878373 | 47.57596365 | 1 |
67.37202755 | 42.83843832 | 0 |
89.67677575 | 65.79936593 | 1 |
50.53478829 | 48.85581153 | 0 |
34.21206098 | 44.2095286 | 0 |
77.92409145 | 68.97235999 | 1 |
62.27101367 | 69.95445795 | 1 |
80.19018075 | 44.82162893 | 1 |
93.1143888 | 38.80067034 | 0 |
61.83020602 | 50.25610789 | 0 |
38.7858038 | 64.99568096 | 0 |
61.37928945 | 72.80788731 | 1 |
85.40451939 | 57.05198398 | 1 |
52.10797973 | 63.12762377 | 0 |
52.04540477 | 69.43286012 | 1 |
40.23689374 | 71.16774802 | 0 |
54.63510555 | 52.21388588 | 0 |
33.91550011 | 98.86943574 | 0 |
64.17698887 | 80.90806059 | 1 |
74.78925296 | 41.57341523 | 0 |
34.18364003 | 75.23772034 | 0 |
83.90239366 | 56.30804622 | 1 |
51.54772027 | 46.85629026 | 0 |
94.44336777 | 65.56892161 | 1 |
82.36875376 | 40.61825516 | 0 |
51.04775177 | 45.82270146 | 0 |
62.22267576 | 52.06099195 | 0 |
77.19303493 | 70.4582 | 1 |
97.77159928 | 86.72782233 | 1 |
62.0730638 | 96.76882412 | 1 |
91.5649745 | 88.69629255 | 1 |
79.94481794 | 74.16311935 | 1 |
99.27252693 | 60.999031 | 1 |
90.54671411 | 43.39060181 | 1 |
34.52451385 | 60.39634246 | 0 |
50.28649612 | 49.80453881 | 0 |
49.58667722 | 59.80895099 | 0 |
97.64563396 | 68.86157272 | 1 |
32.57720017 | 95.59854761 | 0 |
74.24869137 | 69.82457123 | 1 |
71.79646206 | 78.45356225 | 1 |
75.39561147 | 85.75993667 | 1 |
35.28611282 | 47.02051395 | 0 |
56.2538175 | 39.26147251 | 0 |
30.05882245 | 49.59297387 | 0 |
44.66826172 | 66.45008615 | 0 |
66.56089447 | 41.09209808 | 0 |
40.45755098 | 97.53518549 | 1 |
49.07256322 | 51.88321182 | 0 |
80.27957401 | 92.11606081 | 1 |
66.74671857 | 60.99139403 | 1 |
32.72283304 | 43.30717306 | 0 |
64.03932042 | 78.03168802 | 1 |
72.34649423 | 96.22759297 | 1 |
60.45788574 | 73.0949981 | 1 |
58.84095622 | 75.85844831 | 1 |
99.8278578 | 72.36925193 | 1 |
47.26426911 | 88.475865 | 1 |
50.4581598 | 75.80985953 | 1 |
60.45555629 | 42.50840944 | 0 |
82.22666158 | 42.71987854 | 0 |
88.91389642 | 69.8037889 | 1 |
94.83450672 | 45.6943068 | 1 |
67.31925747 | 66.58935318 | 1 |
57.23870632 | 59.51428198 | 1 |
80.366756 | 90.9601479 | 1 |
68.46852179 | 85.5943071 | 1 |
42.07545454 | 78.844786 | 0 |
75.47770201 | 90.424539 | 1 |
78.63542435 | 96.64742717 | 1 |
52.34800399 | 60.76950526 | 0 |
94.09433113 | 77.15910509 | 1 |
90.44855097 | 87.50879176 | 1 |
55.48216114 | 35.57070347 | 0 |
74.49269242 | 84.84513685 | 1 |
89.84580671 | 45.35828361 | 1 |
83.48916274 | 48.3802858 | 1 |
42.26170081 | 87.10385094 | 1 |
99.31500881 | 68.77540947 | 1 |
55.34001756 | 64.93193801 | 1 |
74.775893 | 89.5298129 | 1 |