天池-机器学习算法(一):基于逻辑回归的分类预测

sklearn

https://scikit-learn.org/stable/index.html

https://sklearn.apachecn.org/

sklearn (scikit-learn) 是基于 Python 语言的机器学习工具

  1. 简单高效的数据挖掘和数据分析工具
  2. 可供大家在各种环境中重复使用
  3. 建立在 NumPy ,SciPy 和 matplotlib 上
  4. 开源,可商业使用 - BSD许可证

seaborn

https://seaborn.pydata.org/

Seaborn 是一个基于matplotlib的 Python 数据可视化库。它提供了一个高级界面,用于绘制有吸引力且信息丰富的统计图形。

Pandas

https://www.pypandas.cn/docs/

Pandas 是 Python (opens new window)的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。

Pandas 的主要数据结构是 Series (opens new window)(一维数据)与 DataFrame (opens new window)(二维数据),Pandas 基于 NumPy (opens new window)开发。

pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=None)
data

ndarray (structured or homogeneous), Iterable, dict, or DataFrame

Dict 可以包含系列、数组、常量、数据类或类似列表的对象。如果数据是字典,列顺序遵循插入顺序。

index

Index or array-like

用于结果帧的索引。如果输入数据没有索引信息部分并且没有提供索引,则默认为 RangeIndex

columns

Index or array-like

当数据没有时用于结果帧的列标签,默认为 RangeIndex(0, 1, 2, ..., n)。如果数据包含列标签,将改为执行列选择。

dtype

dtype, default None

要强制的数据类型。只允许一个 dtype。如果没有,则推断。

copy

bool or None, default None

从输入复制数据。对于 dict 数据, None 的默认行为类似于copy=True. 对于 DataFrame 或 2d ndarray 输入, None 的默认行为类似于copy=False.

1、scatter

https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.scatter.html

https://seaborn.pydata.org/generated/seaborn.scatterplot.html

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)[source]
x,y

float or array-like, shape (n, )

数据位置

s

float or array-like, shape (n, ), optional

散点面积

c

array-like or list of colors or color, optional

默认为None. 在这种情况下,标记颜色由colorfacecolorfacecolors的值确定。如果未指定 或None,则标记颜色由Axes当前“形状和填充”颜色循环的下一个颜色确定。此循环默认为rcParams["axes.prop_cycle"](默认值:)。cycler('color', ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf'])

marker

MarkerStyle, default: rcParams["scatter.marker"] (default: 'o')

标记样式。标记可以是类的实例,也可以是特定标记的文本简写。

cmap

str or Colormap, default: rcParams["image.cmap"] (default: 'viridis')

一个Colormap实例或注册的颜色表名。cmap仅在c是浮点数组时使用。

相当于多个调色盘的合集

norm

Normalize, default: None

如果c是浮点数组,则使用norm在 0 到 1 范围内缩放颜色数据c,以便映射到颜色图 cmap 中。如果None,则使用默认值colors.Normalize

vmin,vamx

float, default: None

vminvmax与默认范数结合使用,将颜色数组c映射到颜色图cmap。如果没有,则使用颜色数组的相应最小值和最大值。当给出范数时,不推荐使用vmin / vmax

alpha

float, default: None

alpha 混合值,介于 0(透明)和 1(不透明)之间。

linewidth

float or array-like, default: rcParams["lines.linewidth"] (default: 1.5)

标记边缘的线宽。

edgecolors

{'face', 'none', None} or color or sequence of color, default: rcParams["scatter.edgecolors"] (default: 'face')

标记的边缘颜色。可能的值:

  • 'face':边缘颜色将始终与面部颜色相同。
  • 'none':不绘制补丁边界。
  • 一种颜色或颜色序列。
plotnonfinite

bool, default: False

是否用非有限c (即inf,-inf 或nan)绘制点。如果True点是用错误的 颜色图颜色绘制的(请参阅Colormap.set_bad

返回值 PathCollection
import numpy as np
import matplotlib.pyplot as plt

# Fixing random state for reproducibility
np.random.seed(19680801)


N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = (30 * np.random.rand(N))**2  

plt.scatter(x, y, s=area, c=colors, alpha=0.5)
plt.show()

             天池-机器学习算法(一):基于逻辑回归的分类预测_第1张图片

2、pairplot

http://seaborn.pydata.org/generated/seaborn.pairplot.html

seaborn.pairplot(data, *, hue=None, hue_order=None, palette=None, vars=None, x_vars=None, y_vars=None, kind='scatter', diag_kind='auto', markers=None, height=2.5, aspect=1, corner=False, dropna=False, plot_kws=None, diag_kws=None, grid_kws=None, size=None)
data 长型数据,其中每一列都是一个变量,每一行都是一个观察值
hue data中的变量,将绘图方面映射到不同的颜色
hue_order palette中hue调色板中色调变量的级别顺序
palette 控制色调
vars或{x, y}_vars 选择要绘制的变量
kind 用于控制非对角线上的图的类型,可选"scatter""reg"
diag_kind

控制对角线上的图的类型,可选"hist""kde"

hist直方图

markers 控制散点的样式
height 每个刻面的高度(以英寸为单位)
aspect Aspect * height 给出了每个面的宽度(以英寸为单位)
corner 如果为 True,仅绘制下三角形
dropna 在绘图之前从数据中删除缺失值
{plot, diag, grid}_kws

plot_kws:用于控制非对角线上的图的样式

diag_kws:用于控制对角线上图的样式

3、seaborn.heatmap

https://seaborn.pydata.org/generated/seaborn.heatmap.html

seaborn.heatmap(data, *, vmin=None, vmax=None, cmap=None, center=None, robust=False, annot=None, fmt='.2g', annot_kws=None, linewidths=0, linecolor='white', cbar=True, cbar_kws=None, cbar_ax=None, square=False, xticklabels='auto', yticklabels='auto', mask=None, ax=None, **kwargs)
data 可以强制转换为 ndarray 的二维数据集。如果提供了 Pandas DataFrame,索引/列信息将用于标记列和行。
vmin, vmax

浮点值,可选

锚定颜色图的值,否则它们是从数据和其他关键字参数推断出来的。

cmap

matplotlib colormap name or object, or list of colors, optional

从数据值到颜色空间的映射。如果未提供,默认值将取决于是否center设置。

center

浮点值,可选

绘制散点数据时使颜色图居中的值。如果未指定,则使用此参数将更改默认值cmap

robust

布尔型,可选

如果 True 和vminvmax不存在,则使用robust的分位数而不是极值来计算颜色图范围。

annot

布尔型

如果为 True,则在每个单元格中写入数据值。如果与 具有相同形状的类似数组data,则使用它来注释热图而不是数据。请注意,DataFrames 将匹配位置,而不是索引。

fmt

字符型,可选

添加注释时使用的字符串格式化代码。

annot_kws

dict of key, value mappings, optional

annot True时,matplotlib.axes.Axes.text() 的关键字参数。

linewidths

浮点型,可选

将划分每个单元格的线的宽度。

linecolor

颜色,可选

将划分每个单元格的线条的颜色。

cbar

布尔型,可选

是否绘制颜色条。

cbar_kws

:dict of key, value mappings, optional

matplotlib.figure.Figure.colorbar()的关键字参数。

cbar_ax

matplotlib Axes, optional

绘制颜色条的轴,否则占用主轴的空间。

square

布尔型,可选

如果为 True,请将 Axes 方面设置为“相等”,以便每个单元格都为方形。

xticklabels, yticklables

“auto”, bool, list-like, or int, optional

如果为 True,则绘制数据框的列名。如果为 False,则不绘制列名。如果类似列表,则将这些替代标签绘制为 xticklabels。如果是整数,则使用列名但只绘制每 n 个标签。如果为“自动”,请尝试密集绘制非重叠标签。

mask

bool array or DataFrame, optional

如果通过,mask为 True,数据将不会显示在 的单元格中。带有缺失值的单元格会被自动屏蔽。

ax

matplotlib axes,可选

在其中绘制绘图的轴,否则使用当前活动的轴。

kwargs

other keyword arguments

所有其他关键字参数都传递给 matplotlib.axes.Axes.pcolormesh().

返回值

ax: matplotlib 轴

带有热图的轴对象。

import numpy as np; np.random.seed(0)
import seaborn as sns; sns.set_theme()
flights = sns.load_dataset("flights")
flights = flights.pivot("month", "year", "passengers")
ax = sns.heatmap(flights, annot=True, fmt="d")

                      天池-机器学习算法(一):基于逻辑回归的分类预测_第2张图片

4、sklearn.matrics.confusion_matrix 

https://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html

sklearn.metrics.confusion_matrix(y_true, y_pred, *, labels=None, sample_weight=None, normalize=None)
参数

y_true:真实(正确)目标值

y_pred:分类器返回的估计目标

labels:用于索引矩阵的标签列表。默认值=None

sample_weight:样本权重,默认值=None

normalize:{‘true’, ‘pred’, ‘all’},默认值=None

    在真实(行)、预测(列)条件或所有总体上标准化混淆矩阵。如果没有,混淆矩阵将不会被归一化。

返回值 混淆矩阵的第i行第j列条目表示真实标签为第i类,预测标签为第j类的样本数。

                                      天池-机器学习算法(一):基于逻辑回归的分类预测_第3张图片

5、逻辑回归 LogisticRegression

https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html

class sklearn.linear_model.LogisticRegression(penalty='l2', *, dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='lbfgs', max_iter=100, multi_class='auto', verbose=0, warm_start=False, n_jobs=None, l1_ratio=None)

LogisticRegresson参数:

penalty

{‘l1’, ‘l2’, ‘elasticnet’, ‘none’}, default=’l2’

正则化项

dual

bool, default=False

是否求解对偶问题

tol

float, default=1e-4

迭代停止条件:两轮迭代损失值差值小于tol时,停止迭代

c

float, default=1.0

经验风险和结构风险在损失函数中的权重

fit_intercept

bool, default=True

线性方程中是否包含截距项

intercept_scaling

float, default=1

相当于此前讨论的特征最后一列全为1的列,当使用liblinear求解参数时用于捕获截距

class_weight

dict or ‘balanced’, default=None

各类样本权重

random_state

int, RandomState instance, default=None

随机数种子

solver

{‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’}, default=’lbfgs’

损失函数求解方法

max_iter

int, default=100

求解参数时最大迭代次数,迭代过程满足max_iter或tol其一即停止迭代

multi_class

{‘auto’, ‘ovr’, ‘multinomial’}, default=’auto’

多分类问题时求解方法

verbose

int, default=0

是否输出任务进程

warm_start

bool, default=False

是否使用上次训练结果作为本次运行初始参数

n_jobs int, default=None
l1_ratio

float, default=None

当采用弹性网正则化时,l1正则化权重,就是损失函数中的p

6、figure参数

https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.figure.html

matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=, clear=False, **kwargs)
num

int 或 str 或Figure,可选

图的唯一标识符。

figsize

(float, float), default: rcParams["figure.figsize"] (default: [6.4, 4.8])

指定figure的宽和高,单位为英寸

dpi

float, default: rcParams["figure.dpi"] (default: 100.0)

参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80 1英寸等于2.5cm,A4纸是 21*30cm的纸张

facecolor

default: rcParams["figure.facecolor"] (default: 'white')

背景颜色

edgcolor

default: rcParams["figure.edgecolor"] (default: 'white')

边框颜色

frameon

bool, default: True

如果为 False,则禁止绘制图框。

FigureClass

subclass of Figure

(可选)使用自定义Figure实例

clear

bool, default: False

如果 True 并且图形已经存在,则将其清除。

tight_layout

bool or dict, default: rcParams["figure.autolayout"] (default: False)

如果False使用subplotpars。如果True使用tight_layout默认填充调整子图参数。当提供包含密钥的字典padw_pad, h_pad,和rect,默认的tight_layout填补处理将被替代。

constrained_layout

bool,default:rcParams["figure.constrained_layout.use"] (default: False)

如果True使用约束布局来调整绘图元素的位置。像tight_layout,但设计得更灵活。有关 示例,请参阅 约束布局指南。(注意:不适用于add_subplot或 subplot2grid。)

**kwargs
返回值 Figure

7、创建三维坐标轴对象Axes3D

https://matplotlib.org/devdocs/api/_as_gen/mpl_toolkits.mplot3d.axes3d.Axes3D.html

import matplotlib.pyplot as plt
import numpy as np


n_radii = 8
n_angles = 36

# Make radii and angles spaces (radius r=0 omitted to eliminate duplication).
radii = np.linspace(0.125, 1.0, n_radii)
angles = np.linspace(0, 2*np.pi, n_angles, endpoint=False)[..., np.newaxis]

# Convert polar (radii, angles) coords to cartesian (x, y) coords.
# (0, 0) is manually added at this stage,  so there will be no duplicate
# points in the (x, y) plane.
x = np.append(0, (radii*np.cos(angles)).flatten())
y = np.append(0, (radii*np.sin(angles)).flatten())

# Compute z to make the pringle surface.
z = np.sin(-x*y)

ax = plt.figure().add_subplot(projection='3d')

ax.plot_trisurf(x, y, z, linewidth=0.2, antialiased=True)

plt.show()

            天池-机器学习算法(一):基于逻辑回归的分类预测_第4张图片

 8、boxplot图

https://seaborn.pydata.org/generated/seaborn.boxplot.html

 boxplot参数如下:

seaborn.boxplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, orient=None, color=None, palette=None, saturation=0.75, width=0.8, dodge=True, fliersize=5, linewidth=None, whis=1.5, notch=False, ax=None, **kwargs)
x, y, hue

dataframe中的列名(str)或者矢量数据

数据输入

data

dataframe或者数组

绘图数据集

order, hue_order

用于控制条形图的顺序

orient

"v"|"h" 用于控制图像使水平还是竖直显示(这通常是从输入变量的dtype推断出来的,此参数一般当不传入x、y,只传入data的时候使用)

color 颜色
palette 调色板
saturation 绘制颜色的原始饱和度的比例
width

不使用色调嵌套时的完整元素的宽度,或主要分组变量的一个级别的所有元素的宽度。

dodge 使用色调嵌套时,元素是否应沿分类轴移动。
fliersize

 用于指示异常值观察的标记的大小。

linewidth 构成绘图元素的灰线的宽度。
whis IQR 通过低四分位数和高四分位数以扩展图须的比例。此范围之外的点将被识别为异常值。
ax 要在其上绘制绘图的 Axes 对象,否则使用当前 Axes。
kwargs
返回值

ax:matplotlib Axes

import seaborn as sns
sns.set_theme(style="whitegrid")
tips = sns.load_dataset("tips")
ax = sns.boxplot(x="day", y="total_bill", hue="smoker",
                 data=tips, palette="Set3")

                      天池-机器学习算法(一):基于逻辑回归的分类预测_第5张图片

你可能感兴趣的:(深度学习,机器学习,python)