首页 > 其他分享 >逻辑

逻辑

时间:2022-11-06 00:44:06浏览次数:70  
标签:iris 逻辑 predict test train np data

*实验目的*

理解逻辑回归算法原理,掌握逻辑回归算法框架;
理解逻辑回归的sigmoid函数;
理解逻辑回归的损失函数;
针对特定应用场景及数据,能应用逻辑回归算法解决实际分类问题。

*实验内容*

1.根据给定的数据集,编写python代码完成逻辑回归算法程序,实现如下功能:

建立一个逻辑回归模型来预测一个学生是否会被大学录取。假设您是大学部门的管理员,您想根据申请人的两次考试成绩来确定他们的入学机会。您有来自以前申请人的历史数据,可以用作逻辑回归的训练集。对于每个培训示例,都有申请人的两次考试成绩和录取决定。您的任务是建立一个分类模型,根据这两门考试的分数估计申请人被录取的概率。
算法步骤与要求:

(1)读取数据;

1 import pandas as pd
2 data = pd.read_csv("E:/机器学习/ex2data1.txt", header=None, names=['x1','x2','y'])    #读取数据
3 data

 

 

 

 

(2)绘制数据观察数据分布情况;

1 import numpy as np
2 import pandas as pd
3 import matplotlib.pyplot as plt#引入所需安装包

 

 1 positive = data[data['y']==1]
 2 negative = data[data['y']==0]   
 3 #分别获取样本数据
 4 fig,ax = plt.subplots(figsize=(12,8))
 5 ax.scatter(positive['x1'],positive['x2'],s=30,c='r',marker='o',label='y')
 6 ax.scatter(negative['x1'],negative['x2'],s=30,c='g',marker='x',label='n')
 7 ax.legend(loc=1)    
 8 #显示标签位置
 9 ax.set_xlabel("X1 Score")
10 ax.set_ylabel("X2 Score")
11 plt.show()

 

 

 

 

 

 

 

(3)编写sigmoid函数代码;

1 import numpy as np
2 def f_sigmoid(z):
3     return 1/(1+np.exp(-z))

 

 

(4)编写逻辑回归代价函数代码;

 1 data.insert(0, 'ones',1)
 2 xi=np.array(data.iloc[:,0:3])   #x1列和x2列的数据转换为数组
 3 yi=np.array(data.iloc[:,3:4])   #y列的数据转换为数组
 4 wi=np.zeros(3)                  
 5 def f_cost(w,x,y):
 6     w=np.matrix(w)            #wi转换为矩阵
 7     z=f_sigmoid(np.dot(x,(w.T))) #调用sigmoid函数,dot函数计算两个矩阵内积
 8     Lw=np.sum(np.multiply(y,(-np.log(z)))+np.multiply((1-y),(-np.log(1-z))))/len(x)   #代价函数
 9     return Lw
10 f_cost(wi,xi,yi)

 

 

 

 

(5)编写梯度函数代码;

1 def tidu(w,x,y):
2     w=np.matrix(w)
3     z=f_sigmoid(np.dot(x,(w.T)))
4     WL=np.dot(((z-y).T),x)/len(x)
5     return np.array(WL).flatten()
6 tidu(wi,xi,yi)

 

 

 

 

(6)编写寻找最优化参数代码(可使用scipy.opt.fmin_tnc()函数);

1 from scipy import optimize
2 #引入opt安装包
3 result = optimize.fmin_tnc(func=f_cost, x0=wi, fprime=tidu, args=(xi, yi))
4 wi=result[0]
5 print(result)

 

 

 

 

(7)编写模型评估(预测)代码,输出预测准确率;

1 def predict(w,x):
2     w=np.matrix(w)
3     z=f_sigmoid(x*(w.T))
4     return [1 if i >= 0.5 else 0 for i in z]
5 predictValues=predict(wi,xi)
6 hypothesis=[1 if a==b else 0 for (a,b)in zip(predictValues,yi)]
7 accuracy=hypothesis.count(1)/len(hypothesis)
8 accuracy

 

 

 

(8)寻找决策边界,画出决策边界直线图。

1 x1=np.linspace(30,100,1000)
2 def boundary(X,w):
3     return [(-w[0]-w[1]*i)/w[2] for i in x1]
4 x2=boundary(x1,wi)
5 plt.scatter(positive['x1'],positive['x2'])
6 plt.scatter(negative['x1'],negative['x2'])
7 plt.plot(x1,x2,color='g')
8 plt.show()

 

 

 

 

2. 针对iris数据集,应用sklearn库的逻辑回归算法进行类别预测。

要求:

(1)使用seaborn库进行数据可视化;

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn import metrics
#引入安装包

 

1 data = load_iris() 
2 iris_target = data.target  
3 iris_features = pd.DataFrame(
4     data=data.data, columns=data.feature_names)
5 iris_all = iris_features.copy()
6 iris_all['target'] = iris_target
7 sns.pairplot(data=iris_all, diag_kind='hist', hue='target')
8 plt.show()

 

 

 

 

 

 

 

(2)将iri数据集分为训练集和测试集(两者比例为8:2)进行三分类训练和预测;

 1 X_train, X_test, y_train, y_test = train_test_split(
 2     iris_features, iris_target, test_size=0.2, random_state=2020)
 3 clf = LogisticRegression(random_state=0, solver='lbfgs')
 4 # 在训练集上训练逻辑回归模型
 5 clf.fit(X_train, y_train)
 6 print('逻辑回归的权重:\n', clf.coef_)
 7 print('逻辑回归的截距(w0)\n', clf.intercept_,'\n')
 8 train_predict = clf.predict(X_train)
 9 test_predict = clf.predict(X_test)
10 print(train_predict,'\n\n', test_predict)

 

 

 

(3)输出分类结果的混淆矩阵。

 1 X_train, X_test, y_train, y_test = train_test_split(
 2     iris_features, iris_target, test_size=0.2, random_state=2020)
 3 clf = LogisticRegression(random_state=0, solver='lbfgs')
 4 # 在训练集上训练逻辑回归模型
 5 clf.fit(X_train, y_train)
 6 print('逻辑回归的权重:\n', clf.coef_)
 7 print('逻辑回归的截距(w0)\n', clf.intercept_,'\n')
 8 train_predict = clf.predict(X_train)
 9 test_predict = clf.predict(X_test)
10 print(train_predict,'\n\n', test_predict)

 

 

*实验公式*

 1.sigmoid函数表达式

 

 

 

 2.代价函数公式

*逻辑回归算法的应用*

逻辑回归模型广泛用于各个领域,包括机器学习,大多数医学领域和社会科学。例如,最初由Boyd 等人开发的创伤和损伤严重度评分(TRISS)被广泛用于预测受伤患者的死亡率,使用逻辑回归 基于观察到的患者特征(年龄,性别,体重指数,各种血液检查的结果等)分析预测发生特定疾病(例如糖尿病,冠心病)的风险。逻辑回归模型也用于预测在给定的过程中,系统或产品的故障的可能性。还用于市场营销应用程序。

 

标签:iris,逻辑,predict,test,train,np,data
From: https://www.cnblogs.com/cmx3186588507-/p/16861793.html

相关文章

  • 【JAVA高级】——初识JDBC中Service业务逻辑层
    ✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。本文目录​​......
  • SAP Spartacus SSR 模式下 index.html 页面的响应逻辑调试
    入口:所有的regularroute都使用universalengine:简而言之,AngularUniversal是Angular的预渲染解决方案。在普通的单页应用程序中,我们通常将数据带到客户端,然后在......
  • 实验二:逻辑回归算法实验
    【实验目的】1.理解逻辑回归算法原理,掌握逻辑回归算法框架;2.理解逻辑回归的sigmoid函数;3.理解逻辑回归的损失函数;4.针对特定应用场景及数据,能应用逻辑回归算法解决实际分......
  • 实验二:逻辑回归算法实验
    |20大数据三班|实验二:逻辑回归算法实验-作业-20级大数据3班机器学习-班级博客-博客园(cnblogs.com)||学号|201613328|实验二:逻辑回归算法实验-胡辛原-博客......
  • 你的方案逻辑自洽吗?
    转载:https://www.cnblogs.com/imyalost/p/16757728.html如何理解逻辑自洽?逻辑自洽,原指语言学上的一个原则,即一个理论在语言本身的描述上是不矛盾的,通过分析思辨发现没有......
  • 逻辑备份和物理备份了解
    转自:https://blog.csdn.net/qq_35732963/article/details/76193003 1.介绍逻辑备份和物理备份各有优劣,一般来说,物理备份恢复速度比较快,占用空间比较大;物理备份就是备......
  • 实验二:逻辑回归算法实验
    1导包和读取数据#导包importnumpyasnpimportpandasaspdimportmatplotlib.pyplotasplt#读取数据data=pd.read_csv("D:/1/ex2data1.txt",delimiter=',',header=Non......
  • 数字逻辑笔记 全加器全减器8421BCD转余3
    二进制全加器全减器十进制加法8421BCD转余3码......
  • 实验二:实验逻辑回归算法
    【实验目的】理解逻辑回归算法原理,掌握逻辑回归算法框架;理解逻辑回归的sigmoid函数;理解逻辑回归的损失函数;针对特定应用场景及数据,能应用逻辑回归算法解决实际分类问题......
  • 【逻辑】简陋的配置项编码
    前言最近在工作中,遇到一个需要通过byte[]类型发送控制指令的需求过程分析此次用到了两个简易的位运算和一个小常识按位与(&):两个操作数按位进行与运算按位或(|):两个......