• 第七章 逻辑回归 - 多元逻辑回归、一对多分类

## 0导入相关库

import numpy as np
import pandas as pd

from sklearn import metrics # 评估
import statsmodels.api as sm

## 1 加载数据

df.columns = ["y", "x1", "x2"]

features = ["x1", "x2"]
labels = ["y"]

df.info()
# df.sample(frac=0.05) # 随机取样（分数 四舍五入）
df.sample(n=5) # 5行

## 2 一对多分类

from sklearn.linear_model import LogisticRegression

model = LogisticRegression(multi_class='ovr', solver='sag',
max_iter=1000, random_state=42)
model.fit(df[features], df[labels])

print('系数：\n', model.coef_, '\n')
print('截距：\n', model.intercept_)

### 2.1 分类概率

prob = model.predict_proba(df[features])
pd.DataFrame(prob)

### 2.2 分类汇总情况

pred = model.predict(df[features])
print(metrics.classification_report(df['y'], pred))

### 2.3 混淆矩阵

confusion = metrics.confusion_matrix(df['y'], pred)
confusion

plt.matshow(confusion)
plt.title('混淆矩阵')
plt.colorbar()
plt.ylabel('预测')
plt.xlabel('实际')
plt.show()

## 3 多元逻辑回归

model = LogisticRegression(multi_class='multinomial', solver='sag',
max_iter=1000, random_state=42)
model.fit(df[features], df[labels])

print('系数：\n', model.coef_, '\n')
print('截距：\n', model.intercept_)

### 3.1 分类概率

prob = model.predict_proba(df[features])
pd.DataFrame(prob)

### 3.2 分类汇总情况

pred = model.predict(df[features])
print(metrics.classification_report(df['y'], pred))

### 3.3 混淆矩阵

confusion = metrics.confusion_matrix(df['y'], pred)
confusion

plt.matshow(confusion)
plt.title('混淆矩阵')
plt.colorbar()
plt.ylabel('预测')
plt.xlabel('实际')
plt.show()
plt.tight_layout()

展开全文
• sigmoid function: 二项逻辑回归 （binomial logistic regression model）: ...多元逻辑回归（multi-nomial logistic regression model）：多分类，Y的取之集合为{1,2,...,K} softmax : ...

sigmoid function:

$f(x)=\frac{1}{1+e^{-x}}$

二项逻辑回归 （binomial logistic regression model）:

$P(Y=1|x) = \frac {exp(w \cdot x+b)}{1+exp(w\cdot x+b)}$

$P(Y=0|x) = \frac {1}{1+exp(w\cdot x+b)}$

多元逻辑回归（multi-nomial logistic regression model）：多分类，Y的取之集合为{1,2,...,K}

$P(Y=k|x)=\frac{exp(w_k \cdot x)}{1+\sum_{k=1}^{K-1}exp(w_k\cdot x)},k=1,2,...,K-1$
$P(Y=K|x)=\frac{1}{1+\sum_{k=1}^{K-1}exp(w_k\cdot x)}$

softmax :

$P(y^{(i)}=j|x^{(i)};\theta)=\frac {exp( \theta^T_jx^{i})}{\sum_{l=1}^k exp( \theta^T_jx^{i})}$

展开全文
• 《统计学习方法》中关于多元逻辑回归公式推导，写的比较简单，正好前几天有同事对此比较疑惑，因此，在此进行详细推导，有助于大家共同学习。 首先，关于逻辑回归中二分类问题: P(Y=1∣x)=exp(ω⋅x+b)1+exp(ω⋅x+b...

《统计学习方法》中关于多元逻辑回归公式推导，写的比较简单，正好前几天有同事对此比较疑惑，因此，在此进行详细推导，有助于大家共同学习。

首先，关于逻辑回归中二分类问题:
$P(Y=1|x,\omega)=\frac{exp(\omega \cdot x+b)}{1+exp(\omega \cdot x+b)}$
$P(Y=0|x,\omega)=\frac{1}{1+exp(\omega \cdot x+b)}$
事件发生对数几率定义如下：
$log \frac{P(Y=1|x,\omega)}{1-P(Y=0|x,\omega)}=\omega\cdot x$

其次，关于对分类问题，可以看做多个二分类问题：
$log \frac{P(Y=1|x)}{P(Y=K|x)}=\omega_1\cdot x$
$log \frac{P(Y=i|x)}{P(Y=K|x)}=\omega_i\cdot x$
$log \frac{P(Y=K-1|x)}{P(Y=K|x)}=\omega_{K-1}\cdot x$
因此有：
$P(Y=1|x)=P(Y=K|x) *e^{\omega_1\cdot x}$
$\cdot\cdot\cdot$
$P(Y=i|x)=P(Y=K|x) *e^{\omega_i\cdot x}$
$P(Y=K-1|x)=P(Y=K|x) *e^{\omega_{K-1}\cdot x}$
概率之和为1：
$\sum^K_i P(Y=i|x, \omega)=1$
联合上述K-1个、概率和式子，则有：
$(1+\sum ^{K-1}_{i=1}e^{\omega_i \cdot x})\cdot P(Y=K|x,\omega)=1$

$P(Y=K|x,\omega) = \frac{1}{(1+\sum ^{K-1}_{i=1}e^{\omega_i \cdot x})}$
$P(Y=i|x,\omega) = \frac{e^{\omega_i\cdot x}}{(1+\sum ^{K-1}_{i=1}e^{\omega_i \cdot x})}$
到此，全部推导完成。如果推导有疑问，欢迎大家一起交流！

展开全文
• 多元逻辑回归与多元回归区别What do James Bond, Deepak Chopra, and Einstein have in common? They browse automatically in multiverses. You can, too, and make it harder to be tracked. James Bond，Deepak ...

多元逻辑回归与多元回归区别

What do James Bond, Deepak Chopra, and Einstein have in common? They browse automatically in multiverses. You can, too, and make it harder to be tracked.

James Bond，Deepak Chopra和Einstein有什么共同点？ 他们自动浏览多元宇宙。 您也可以，使其更难以跟踪。

一切都开始在DEV.to中阅读本文

Firefox is indeed a great browser, I said in the comment section. And mentioned my favorite add-on.

在评论部分中说Firefox确实是一个很棒的浏览器。 并提到了我最喜欢的附加组件。

# 树样式标签，我最喜欢的附件 (Tree Style Tabs, my favorite add-on)

I mentioned how I can’t live without my favorite add-on Tree Style Tabs.

我提到了如果没有我最喜欢的附加树样式选项卡，我将无法生存。

This add-on allows me to comfortably see all of my open tabs in a vertical column to the left of the browser rather than on an unreadable list on the top of the browser:

这个附加组件使我可以在浏览器左侧的垂直列中舒适地查看所有打开的选项卡，而不是浏览器顶部的不可读列表中：

As you can see in the image, new tabs open in a tree-style fashion. This conveniently puts some order in an otherwise hectic sea of tabs. It also adds readability and makes it easier to find a tab-needle in the haystack.

如您在图像中看到的，新选项卡以树形样式打开。 这可以方便地在繁忙的制表符海洋中下订单。 它还增加了可读性，并使在干草堆中更容易找到a针。

If you need horizontal space back, the sidebar can be conveniently closed/opened using a keyboard shortcut, like a boss.

如果需要向后水平空间，则可以使用键盘快捷键(例如老板)方便地关闭/打开侧栏。

If you want, you can expand the sidebar width and read the whole title of the tab. Something impossible in the default crunched upper row of tabs.

如果需要，可以扩展侧栏的宽度并阅读选项卡的整个标题。 默认情况下，上面显示的所有行中都是不可能的。

# 简介：容器标签 (Intro: Container tabs)

So what are container tabs?

那么什么是容器标签？

Firefox’s Containers are like profiles, allowing you to segregate browsing activity within different profiles on your computer. This allows for some helpful features, like logging in to different accounts on the same website simultaneously. If used properly, it can also protect the user’s privacy.

Firefox的容器类似于配置文件，可让您在计算机上的不同配置文件中分隔浏览活动。 这提供了一些有用的功能，例如同时登录同一网站上的不同帐户。 如果使用得当，它还可以保护用户的隐私。

Before the advent of containers, opening different sessions (think usernames/passwords) of the same domain could only be achieved opening different browsers.

在容器出现之前，只能通过打开不同的浏览器来实现打开同一域的不同会话(认为用户名/密码)。

Using containers, you can open in separate containers different sessions in the same browser. Each session does not know about the other ones.

使用容器，可以在同一浏览器中的不同会话中的单独容器中打开。 每个会话都不了解其他会话。

That is, I can be logged in with different users in the same domain in the same browser! This is pretty handy.

也就是说，我可以在同一浏览器中以同一域中的不同用户身份登录！ 这很方便。

As another example, for a developer workflow, this means you can be logged in and website as different users in the same browser at the same time.

再举一个例子，对于开发人员工作流程，这意味着您可以同时在同一浏览器中以不同用户的身份登录网站。

# 快来多帐户容器 (Come Multi-account containers)

In the comments’ back-n-forth, @citizen428 mentioned a very useful add-on: Multi-Account Containers!

在评论的后面， @ citizen428提到了一个非常有用的附加组件： Multi-Account Containers

This add-on automatically opens domains you choose in separate containers.

此加载项自动在单独的容器中打开您选择的域。

So, for example, you can automatically always open all of *.google.com’s universe in a separate container. Google’s cookies, sessions, etc, will be kept separate from any other domain you open (as if you were using a separate browser).

# 最后成分：每个领域的一次性，临时容器 (Last ingredient: disposable, temporary containers for every domain)

All other domains that you don’t configure to always open in a particular container will open in the same container as the parent tab.

您未配置为始终在特定容器中打开的所有其他域将在与父选项卡相同的容器中打开。

However, there is a nifty add-on that I’m testing. It is called Temporary Containers.

但是，我正在测试一个漂亮的附加组件。 它称为临时容器

This one is not yet “recommended by Mozilla”, but it is very promising and Mozilla should definitely have a closer look at it. And if you’re still reading, probably you should too.

尚未“被Mozilla推荐”，但它非常有前途，Mozilla绝对应该对其进行仔细研究。 如果您仍在阅读，也许您也应该阅读。

With Temporary Containers, all tabs that are not configured to open in a specified container (yes, it is compatible with Multi-Account Containers!) will open in a temporary container. From their wiki:

使用临时容器，所有未配置为在指定容器中打开的选项卡(是的，它与多帐户容器兼容！)将在临时容器中打开。 从他们的维基

Automatically reopen Tabs in new Temporary Containers when

在新的临时容器中自动重新打开标签页

- Opening a new Tab

-打开一个新标签页

- A Tab tries to load a Link in the Default Container

-标签试图将链接加载到默认容器中

- An external Program opens a Link in the Browser

-外部程序在浏览器中打开链接

In combination with Multi-Account Containers

与多帐户容器结合使用

- Reopens Confirm Page if in Default Container so you can choose between Temporary Container and Permanent Container

-如果在默认容器中，则重新打开“确认页面”，以便您可以在“临时容器”和“永久容器”之间进行选择

To achieve this, all you have to do is to configure the add-on to open new domains in temporary containers.

为此，您所要做的就是将加载项配置为在临时容器中打开新域。

# 无开销：临时容器会自动删除 (No overhead: temporary containers are automatically deleted)

Concerned about the overhead that too many containers may have? Worry not!

是否担心太多容器可能产生的开销？ 不用担心！

There is a reason why the extension is called “temporary” containers. These temporary containers are deleted by default 15m after the last tab in the temporary container is closed. But the timeout can be manually changed.

将扩展名称为“临时”容器是有原因的。 在关闭临时容器中的最后一个标签后，默认情况下，这些临时容器会删除15m。 但是超时可以手动更改。

# 结论 (Conclusion)

These 3 Firefox add-ons have really improved my workflow while browsing.

这3个Firefox插件确实改善了我浏览时的工作流程。

1. Open a sea of tabs opened vertically in a tree-style fashion, instead of being in an upper, basically unreadable row as mostly every browser’s default: Tree Style Tabs

打开的，而不是上，基本上无法读取行中被作为主要每一个浏览器的默认树风格时尚垂直打开的选项卡的海洋，： 树样式的选项卡

2. Open particular domains in separate containers: Multi-Account Containers

在单独的容器中打开特定域： 多帐户容器

3. Open all other domains in temporary, disposable, containers: Temporary Containers

在临时的一次性容器中打开所有其他域： 临时容器

我很开放，很想听听您对此的看法。 您的工作流程有何不同？ 你有建议吗？

多元逻辑回归与多元回归区别

展开全文
• 利用TensorFlow实现多元逻辑回归，代码如下： import tensorflow as tf import numpy as np from sklearn.linear_model import LogisticRegression from sklearn import preprocessing # Read x and y x_...
• 更多代码请见：...Spark中组件Mllib的学习之逻辑回归篇 1解释 但预测较多数据集，需要去计算准确度2.代码：/** * @author xubo * ref:Spark MlLib机器学习实战 * more code:https://github.com/xubo
• 5.4多元逻辑回归实战 5.4.1多元逻辑回归实战之预测病马的死亡率 本次实战内容，将使用Logistic回归来预测患疝气病的马的存活问题。原始数据集下载地址： http://archive.ics.uci.edu/ml/datasets/Horse+Colic ...
• 最近在学习TensorFlow，发现它构造一个模型非常的简单，它的计算可以表示为一个有向图，每个运算操作将作为一个节点，节点与节点之间的连接称为边（edge），tensor即在计算图的边中流动。import tensorflow as tf ...
• 文章目录问题的提出softmax运算符在运用softmax运算符是的注意事项交叉熵损失函数使用Pytorch实现softmax回归模型导入必要的包初始化参数的获取数据定义网络模型初始化模型参数定义损失函数定义优化函数训练 ...
• 在做多元逻辑回归进行分类问题时，经常需要将某一个分类转化成vector，或者反过来的操作。比如一共有四种分类，那么第二种分类的vector就是：[0;1;0;0], 除了第二个元素为1外，其它的都为0. 所以问题为：给定一个...
• 文章目录一、 Softmax函数与多元逻辑回归二、广告时间 一、 Softmax函数与多元逻辑回归 为了之后更深入地讨论神经网络，本节将介绍在这个领域里很重要的softmax函数，它常被用来定义神经网络的损失函数（针对分类...
• 这个例子是逻辑回归不加正则项的编写笔记 首先导入依赖 import numpy as np import matplotlib.pyplot as plt import scipy.io as sio 加载数据, 加载的数据是一个字典 data = sio.loadmat('ex3data1.mat') data,...
• 多元分类：逻辑回归分类器 并绘制pcolormesh伪彩图 sklearn.linear_model.LogisticRegression( solver='liblinear', C=正则强度) ''' # pcolormesh(x, y, c=d, cmap='jet') cmap:渐变色映射 plt....
• 直白解释逻辑回归中的损失函数： 如果标签是1，我们希望预测也是1 这里时候后一项没了，y’越接近1对应的损失函数值越小 如果标签是0，我们希望预测也是0 这里时候前一项没了，y’越接近0对应的损失函数值越小 而且...
• 可以使用阶梯函数通过逐步过程确定多重逻辑回归。此函数选择模型以最小化AIC，而不是像手册中的SAS示例那样根据p值。另请注意，在此示例中，步骤函数找到了与“ 手册”中的过程不同的模型。 通常建议不要盲目地遵循...
• 一元线性回归，多元线性回归、逻辑回归概念学习
• 线性回归： 线性回归假设特征和结果...只有一个自变量的情况叫做简单回归, 多个自变量情况的叫做多元回归   简单回归：y= a + b*x 多元回归：h(x)= θ0 + θ1*x1 + θ2*x2 + ... 损失函数：j(θ), 对x(i)的估计
• 多元线性回归到逻辑回归
• 线性回归，前面用Python从底层一步一个脚印用两种方法实现了回归拟合。在这个高级语言层出不穷的年代，这样做显然不明智，所以我考虑用优秀的数据分析工具——R语言（不敢说最...
• 　给出多元线性回归的解法，本篇重点回答如何构造“梯度下降法解”的数学模型。 2 从线性回归模型到最小二乘法的构建　 　[问题] 对于给定向量集合Ω={Xi}，i:={1，...m}，Xi属于集合Rn；再给出一个数集Y={yi}，i:...
• 多元线性回归是做预测的，逻辑回归是做分类的。 某件事发生的可能性越大，熵越小。
• 多元线性回归 定义：回归分析中，含有两个或者两个以上自变量，称为多元回归，若自变量系数为1，则此回归为多元线性回归。...逻辑回归（分类问题的处理） 求解步骤：1）确定回归函数 (通常用Sigm...
• #1.数据预处理 import numpy as np import matplotlib.pyplot as plt #定义存储数据（x）和目标数据(y)的数组 x,y=[],[] #遍历数据集，变量sample是一个样本 for sample in open("price.txt"...
• # todo 重要参数 solver & multi_class # multi_class 输入告知模型，我们要处理分类问题的模型 # 1. 输入 'ovr' 处理二分类，或者让模型使用‘一对多’的形式来处理多分类问题 # 2.'multinomial' 处理多分类，...
• 使用逻辑回归去处理多元二分类问题，该任务的难点是处理数据集的问题，数据集是没有经过任何处理的数据集，需要对数据进行处理，我这里使用了最简单的标记编码方法并对数据进行归一化
• knn_训练多元分类器 # 训练多元分类器 from sklearn.linear_model import LogisticRegression from sklearn import datasets from sklearn.preprocessing import StandardScaler # 加载数据 iris = datasets.load_...

空空如也

...
收藏数 512
精华内容 204
热门标签
关键字：