Machine Learning--logistic regression

本文介绍了当因变量为离散值时,采用逻辑回归代替线性回归的方法,并通过Matlab代码实现逻辑回归,包括似然函数计算及梯度下降等步骤。

本文参考http://blog.youkuaiyun.com/xiahouzuoxin/article/details/44959205
在此向原作者致谢

当y的取值离散时,linear regression algorithm不再适用,而应该选择logistic regression.
下图是logistic function(or sigmoid function):

这里写图片描述

下面是matlab代码:

function Logistic_regression
clear all;
close all;
clc;

data = load('LogisticInput.txt');
x = data(:,1:2);
y = data(:,3);

%Plot data
positive = find(y==1);
negtive = find(y==0);
hold on;
plot(x(positive,1),x(positive,2),'blue*');
plot(x(negtive,1),x(negtive,2),'ro');

[m,n] = size(x);
x = [ones(m,1),x];
theta = zeros(n+1,1);
[cost, grad] = cost_func(theta, x, y);
threshold = 0.1;
alpha = 10^(-1);
%stochastic gradient descent
while cost > threshold
    theta = theta + alpha*grad;
    [cost, grad] = cost_func(theta, x, y);
end

hold on
plot_x = [min(x(:,2))-2,max(x(:,2))+2];
plot_y = (-1./theta(3)).*(theta(2).*plot_x + theta(1));
plot(plot_x, plot_y, 'r-');
legend('Positive', 'Negtive', 'Decision')
xlabel('Feature 1');
ylabel('Feature 2');
title('Logistic Regression');

end


function [J,grad] = cost_func(theta, X, y)
%compute likelihood function and gradient
m = length(y);
hx = sigmoid(X*theta);
J = (1/m)*sum(-y.*log(hx)-(1.0-y).*log(1.0-hx)); 
grad = (1/m)*X'*(y-hx); 
end

function g = sigmoid(z)
g = 1./(1+exp(-z));
end

结果:

这里写图片描述

现在对这种回归问题大致有了一点感觉:首先要确定分布的probability function,然后改写为likelihood function,再对likelihood function进行最大化(一般会再改写成log(L_θ)后再处理),进而得到参数的更新方程(batch gradient descent、stochastic gradient descent)。

### 使用机器学习辅助区分多种挥发性有机化合物 在气体传感领域,利用机器学习技术来区分多种挥发性有机化合物(VOCs)是一种常见且有效的方法。这种方法通常依赖于传感器阵列产生的数据集以及相应的特征提取和分类算法。 #### 数据收集与预处理 为了实现 VOC 的识别,首先需要通过气敏传感器获取原始信号并构建训练数据集。这些传感器可以检测到不同类型的化学物质,并将其转化为电信号或其他可测量的形式。由于实际应用中的噪声干扰等因素,在正式建模之前应对采集的数据实施必要的清洗操作,比如去除异常值、填补缺失项等[^1]。 #### 特征工程 接着是对原始时间序列或者频谱图进行特征提取的过程。这一步骤旨在发现能够最好地区分各类目标物的关键属性。常用的特征可能包括但不限于响应峰值大小、达到稳定状态所需的时间间隔、恢复速率等等。此外还可以采用降维方法如PCA(Principal Component Analysis),以减少冗余变量带来的影响同时保留主要信息[^2]。 #### 模型选择与训练 针对具体应用场景选取合适的ML模型至关重要。对于简单的二元判定任务来说逻辑回归(Logistic Regression)可能是不错的选择;而对于更复杂的多类别划分则支持向量机(Support Vector Machine, SVM)[^3], 随机森林(Random Forest), 或者深度神经网络(Deep Neural Networks,DNNs)往往表现更好 。每种算法都有各自的优势劣势需综合考虑计算资源消耗情况做出决定 。 ```python from sklearn.svm import SVC from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # 假设X为特征矩阵,y为目标标签数组 X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2) clf=SVC(kernel='rbf') # 创建SVM实例 clf.fit(X_train,y_train) # 训练过程 predictions=clf.predict(X_test)# 测试阶段预测结果 print(f'Accuracy:{accuracy_score(y_test,predictions)}') ``` 以上代码片段展示了如何基于Scikit-Learn库运用径向基核函数的支持向量分类器完成基本的监督学习流程演示[^4]。 #### 性能评估 最后要对所建立起来的系统进行全面测试验证其泛化能力。除了常规使用的精确度(Accuracy)指标外还应该关注召回率(recall rate) ,F1得分(F1-score)以及其他特定业务需求下的衡量标准以便全面了解系统的优劣之处[^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值