吴恩达机器学习 逻辑回归 作业2(芯片预测) Python实现 代码详细解释

整个项目的github:https://github.com/RobinLuoNanjing/MachineLearning_Ng_Python里面可以下载进行代码实现的数据集题目介绍:In this part of the exercise, you will implement regularized logistic regression to predict whethe...
摘要由CSDN通过智能技术生成

整个项目的github:https://github.com/RobinLuoNanjing/MachineLearning_Ng_Python

里面可以下载进行代码实现的数据集

 

题目介绍:

In this part of the exercise, you will implement regularized logistic regression to predict whether microchips from a fabrication plant passes quality assur- ance (QA). During QA, each microchip goes through various tests to ensure it is functioning correctly.

Suppose you are the product manager of the factory and you have the test results for some microchips on two different tests. From these two tests, you would like to determine whether the microchips should be accepted or rejected. To help you make the decision, you have a dataset of test results on past microchips, from which you can build a logistic regression model.

 

翻译:

在这部分练习中,你将会应用正则化逻辑回归算法去预测一批制造厂的芯片是否能通过质检(QA)。每一批芯片都会经历各种各样的测试确保它的功能完善。

假如你是这个工厂的项目经理,并且你有一批经过两种测试规格的芯片。通过这两种测试规格,你想要确定芯片是会通过QA质检还是无法通过质检。你可以用逻辑回归模型去测试一批过去的数据集(这就是我们的任务)。

 

题目理解:

可能到现在你可能还不能理解要干啥,没关系,我们直接看一下图。

 

如上图所示,每一个点可以代表一个芯片数据,x轴代表这个芯片经过自家工厂test1测试的数据,y轴代表这个芯片经过自家工厂test2测试的数据。红点代表能经过QA质检,蓝点代表无法经过QA质检。所以我们要找个模型来确定一个经过test1和test2测试的芯片能否通过QA质检。

 

 

代码详细解释:

先看看主要函数logisticRegression(),然后我们根据调用过程,一个个解释每个调用的函数实现。

#逻辑回归函数
def logisticRegression():
    data=loadFile('data2.txt')  #1.载入文件

    X=np.array(data[:,0:-1])    #2创建矩阵X和y
    y=np.array(data[:,-1])

    plotData(X,y)               #3.画图

    X=mapFeature(X[:,0],X[:,1]) #4.映射过的多项式覆盖原来的X,此时的X已经有六列。

    theta=np.zeros((X.shape[1],1))  #5.初始化theta值,此时是6行1列的矩阵
    initial_lambda=0.1     #6.正则化系数的值lambda一般取0.01,0.1,1 。

    J=costFunction(theta,X,y,initial_lambda)       #7.调用代价函数
    print(J)        #测试下J,初始值应该是0.69314718

    result = optimize.fmin_bfgs(costFunction, theta, fprime=gradient, args=(X, y, initial_lambda))   #9.调用fmin_bfgs算法。返回值返回的是theta的最优解
    p=predict(X,result)      #10.调用预测函数。result参数为我们在上一步中求出的theta最优解
    print('theta的最优解为:',result)
    print('在当前数据集上,训练的准确度为%f%%'%np.mean(np.float64(p==y)*100))           #p==y实际上是一个bool判断。返回的是一个n行1列的数组,值为False和True,用np.float64转化为0和1数组。

    X = data[:, 0:-1]     #这里需要注意下,我们要重新把X重新定义下,变成只有两个特征的数组。原来的X因为进行了多项式映射,已经有6个了。
    plotDecisionBoundary(result,X,y)  #11.画出决策边界。我们需要把theta最优解result代入

 

 

 

1.logisticRegression()函数调用loadFile函数,载入文件。

#载入文件函数
def loadFile(path):
    return np.loadtxt(path,delimiter=',',dtype=np.float64)      #返回一个np对象。其中分隔符为逗号,类型为np.float64类型

 

2.创建两个矩阵X和y。一个用于接收横坐标和纵坐标,一个用于接受实际值(1或0)。

    X=np.array(data[:,0:-1])    #
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值