coursera Machine Learning ex2
这次的作业为Logistic Regression的具体实现。 1 Logistic Regression 1.2 Implementatiion 1.2.1 Warm up 既然都说是热身了,那么也就一扫而过吧。在sigmoid.m中添加如下代码: g = 1./(1 + e.^-z); 这段代码就是sigmoid函数的具体实现,对矩阵同样适用。 1
这次的作业为Logistic Regression的具体实现。
1 Logistic Regression
1.2 Implementatiion
1.2.1 Warm up
既然都说是热身了,那么也就一扫而过吧。在sigmoid.m中添加如下代码:
g = 1./(1 + e.^-z);
这段代码就是sigmoid函数的具体实现,对矩阵同样适用。
1.2.2 Cost Function and gradient
和ex1类似,接下里就是实现代价函数和梯度下降的公式,只要注意好矩阵的操作即可,在costfunction.m中添加如下代码:
Hx = sigmoid(X * theta); J = 1/m * (-y'*log(Hx)-(1-y')*log(1-Hx)); grad = 1/m * ((Hx - y)' * X);
1.2.3 Learning paramters using fminunc
并无需要我们自己写的代码,只是讲解了一下如何使用octave自带的fminunc来找到使得代价函数J最小的参数θ,给出的具体代码如下:
% Set options for fminunc options = optimset('GradObj', 'on', 'MaxIter', 400); % Run fminunc to obtain the optimal theta % This function will return theta and the cost [theta, cost] = ... fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);
最后fminunc函数返回的参数构成的直线分割的效果如下:
1.2.4 Evaluating logistic regression
可以看到我们已经完成了找到那条最好的划分曲线,那么我们将如何来评价我们找到的这条曲线的好坏呢?一种方法就是用这条曲线来对所有训练集中的元组进行判断,统计其正确率,于是我们在predict.m中添加如下代码:
Hx = sigmoid(X * theta); for iter = 1:m if Hx(iter) >= 0.5 p(iter) = 1; else p(iter) = 0; end; end;
2 Regularized logistic regression
如果我们在碰到这种问题的分类的时候,只有2个参数只能用直线进行划分的话显然不好,我们就不得不增加参数,比如x1*x2以及x1^2等,增加参数虽然能够更好的划分训练集,但是也会带来过度匹配(overfitting)的问题,下面的练习就会解决这个问题。
按照之前在正规化中的介绍,将会在代价函数中添加参数本身大小的影响,从而使得参数的大小都比较接近0,修改过的公式在视频和pgf都已列出,我们需要做的就是用Matlab语言实现之。代码如下(costFunctionReg.m):
Hx = sigmoid(X * theta); J = 1/m * (-y'*log(Hx)-(1-y')*log(1-Hx)) + lambda/(2*m) * (theta(2:end)' * theta(2:end)); grad = 1/m * ((Hx - y)' * X) + lambda/m * theta'; grad(1) = grad(1) - lambda/m * theta(1);
最后的效果如下:

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이 기사는 MySQL의 Alter Table 문을 사용하여 열 추가/드롭 테이블/열 변경 및 열 데이터 유형 변경을 포함하여 테이블을 수정하는 것에 대해 설명합니다.

기사는 인증서 생성 및 확인을 포함하여 MySQL에 대한 SSL/TLS 암호화 구성에 대해 설명합니다. 주요 문제는 자체 서명 인증서의 보안 영향을 사용하는 것입니다. [문자 수 : 159]

기사는 MySQL에서 파티셔닝, 샤딩, 인덱싱 및 쿼리 최적화를 포함하여 대규모 데이터 세트를 처리하기위한 전략에 대해 설명합니다.

기사는 MySQL Workbench 및 Phpmyadmin과 같은 인기있는 MySQL GUI 도구에 대해 논의하여 초보자 및 고급 사용자를위한 기능과 적합성을 비교합니다. [159 자].

이 기사에서는 Drop Table 문을 사용하여 MySQL에서 테이블을 떨어 뜨리는 것에 대해 설명하여 예방 조치와 위험을 강조합니다. 백업 없이는 행동이 돌이킬 수 없으며 복구 방법 및 잠재적 생산 환경 위험을 상세하게합니다.

이 기사에서는 PostgreSQL, MySQL 및 MongoDB와 같은 다양한 데이터베이스에서 JSON 열에서 인덱스를 작성하여 쿼리 성능을 향상시킵니다. 특정 JSON 경로를 인덱싱하는 구문 및 이점을 설명하고 지원되는 데이터베이스 시스템을 나열합니다.

기사는 외국 열쇠를 사용하여 데이터베이스의 관계를 나타내고 모범 사례, 데이터 무결성 및 피할 수있는 일반적인 함정에 중점을 둡니다.

기사는 준비된 명령문, 입력 검증 및 강력한 암호 정책을 사용하여 SQL 주입 및 무차별 적 공격에 대한 MySQL 보안에 대해 논의합니다 (159 자)
