1.什么是线性回归和逻辑回归线性回归是一种用于建模连续目标变量与一个或多个自变量之间线性关系的统计方法,它的基本形式为y theta0 theta1*x theta2 * x*x .......。其中我们会假设自变量与因变量存在线性关系自变量之间相关性较低。线性回归的损失函数为L(w,b)∑i1n​(yi​−y^​i​)2以均方方差的形式来测算。逻辑回归的损失函数为2.线性回归代码实战import numpy as np import pandas as pd data pd.read_csv(xandy.csv) #读取数据 data.head() x data.loc[:,x ] y data.loc[:,y] #分别读取两列的数据 print(x,y) from matplotlib import pyplot as plt plt.figure() plt.scatter(x,y) plt.show() #建立可视化图形观察 from sklearn.linear_model import LinearRegression lr_model LinearRegression() #建立线性回归模型 x np.array(x) x x.reshape(-1,1) y np.array(y) y y.reshape(-1,1) #将x,y向量化 lr_model.fit(x,y) #导入数据 y_predict lr_model.predict(x) print(y_predict) a lr_model.coef_ b lr_model.intercept_ #取得权重和截距 from sklearn.metrics import mean_squared_error,r2_score MSE mean_squared_error(y,y_predict) R2 r2_score(y,y_predict) print(MSE,R2) #损失函数以及模型准确度3.逻辑回归代码实战import pandas as pd import numpy as np data pd.read_csv(examdata.csv) data.head() from matplotlib import pyplot as plt fig1 plt.figure() plt.scatter(data.loc[:,Exam1],data.loc[:,Exam2]) plt.title(Exam1-Exma2) plt.xlabel(Exam1) plt.ylabel(Exam2) plt.show() #可视化分析 mask data.loc[:,Pass] 1 fig2 plt.figure() passed plt.scatter(data.loc[:,Exam1][mask],data.loc[:,Exam2][mask]) failed plt.scatter(data.loc[:,Exam1][~mask],data.loc[:,Exam2][~mask]) plt.title(Exam1-Exam2) plt.xlabel(Exam1) plt.ylabel(Exam2) plt.legend((passed,failed),(passed,failed)) plt.show() #可视化更清晰表达 X data.drop([Pass],axis 1) y data.loc[:,Pass] x1 data.loc[:,Exam1] x2 data.loc[:,Exam2] X.head() #提取数据 from sklearn.linear_model import LogisticRegression LR LogisticRegression( C1e5, # 关闭正则化 solverliblinear, # 老版本求解器 random_state42, # 固定随机种子 max_iter1000 # 保证收敛 ) LR.fit(X,y) y_predict LR.predict(X) from sklearn.metrics import accuracy_score accuracy accuracy_score(y,y_predict) print(accuracy) #对模型准确度进行分析 theta0 LR.intercept_ theta1,theta2 LR.coef_[0][0],LR.coef_[0][1] print(theta0,theta1,theta2) #线性 fig3 plt.figure() passed plt.scatter(data.loc[:,Exam1][mask],data.loc[:,Exam2][mask]) failed plt.scatter(data.loc[:,Exam1][~mask],data.loc[:,Exam2][~mask]) plt.plot(x1,X2_new) plt.title(Exam1-Exam2) plt.xlabel(Exam1) plt.ylabel(Exam2) plt.legend((passed,failed),(passed,failed)) plt.show() #直观看 X1_2 x1*x1 X2_2 x2*x2 X1X2 x1*x2 X_new {X1:x1,X2:x2,X1_2:X1_2,X2_2:X2_2,X1X2:X1X2} X_new pd.DataFrame(X_new) print(X_new) #规范化X——new LR2 LogisticRegression() LR2.fit(X_new,y) y2_predict LR2.predict(X_new) accuracy2 accuracy_score(y,y2_predict) #对建立的二次进行分析 x1_new x1.sort_values() theta0 LR2.intercept_ theta1,theta2,theta3,theta4,theta5 LR2.coef_[0][0],LR2.coef_[0][1],LR2.coef_[0][2],LR2.coef_[0][3],LR2.coef_[0][4] print(theta0,theta1,theta2,theta3,theta4,theta5) a theta4 b theta5*x1_newtheta2 c theta0*theta1*x1_newtheta3*x1_new*x1_new X2_new_bounary (-bnp.sqrt(b*b-4*a*c))/(2*a) print(X2_new_bounary) #通过数学手段分析 fig4 plt.figure() plt.plot(x1,X2_new_bounary) plt.show()当然在代码中因为仅仅只考虑了二次函数的一边所以可以进行对应优化def f(x) : a theta4 b theta5*X1_new theta2 c theta3*X1_new*X1_new theta0*theta1*X1_new X1_new_bounary (-bnp.sqrt(b*b-4*a*c))/(2*a) X2_new_bounary (-b-np.sqrt(b*b-4*a*c))/(2*a) return X1_new_bounary,X2_new_bounary4.总结线性回归更加适用于连续数值目标变量通常用于预测房价天气温度等。而逻辑回归函数更加偏于二分类甚至多分类他的范围存在于01之间。学习视频15 考试通过实战二_哔哩哔哩_bilibili