Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >3大树模型实战乳腺癌预测分类

3大树模型实战乳腺癌预测分类

作者头像
皮大大
发布于 2023-08-25 02:44:40
发布于 2023-08-25 02:44:40
55200
代码可运行
举报
运行总次数:0
代码可运行

3大树模型实战乳腺癌分类预测

本文从特征的探索分析出发,经过特征工程和样本均衡性处理,使用决策树、随机森林、梯度提升树对一份女性乳腺癌的数据集进行分析和预测建模。

数据集

数据是来自UCI官网,很老的一份数据,主要是用于分类问题,可以自行下载学习

https://archive.ics.uci.edu/ml/datasets/breast+cancer

导入库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd
import numpy as np

import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

import plotly_express as px
import plotly.graph_objects as go

from sklearn.ensemble import RandomForestClassifier
from sklearn.tree import DecisionTreeClassifier

from sklearn.tree import export_graphviz
from sklearn.metrics import roc_curve, auc
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn import metrics

from sklearn.model_selection import train_test_split

导入数据

数据是来自UCI官网

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 来自uci

df = pd.read_table("breast-cancer.data",
                   sep=",",
                   names=["Class","age","menopause","tumor-size","inv-nodes",
                          "node-caps","deg-malig","breast","breast-quad","irradiat"])

df

基本信息

In [3]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.dtypes   # 字段类型

Out[3]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Class          object
age            object
menopause      object
tumor-size     object
inv-nodes      object
node-caps      object
deg-malig       int64
breast         object
breast-quad    object
irradiat       object
dtype: object

In [4]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.isnull().sum()  # 缺失值

Out[4]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Class          0
age            0
menopause      0
tumor-size     0
inv-nodes      0
node-caps      0
deg-malig      0
breast         0
breast-quad    0
irradiat       0
dtype: int64

In [5]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
## 字段解释

columns = df.columns.tolist()
columns

Out[5]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
['Class',
 'age',
 'menopause',
 'tumor-size',
 'inv-nodes',
 'node-caps',
 'deg-malig',
 'breast',
 'breast-quad',
 'irradiat']

下面是每个字段的含义和具体的取值范围:

属性名

含义

取值范围

Class

是否复发

no-recurrence-events, recurrence-events

age

年龄

10-19, 20-29, 30-39, 40-49, 50-59, 60-69, 70-79, 80-89, 90-99

menopause

绝经情况

lt40(40岁之前绝经), ge40(40岁之后绝经), premeno(还未绝经)

tumor-size

肿瘤大小

0-4, 5-9, 10-14, 15-19, 20-24, 25-29, 30-34, 35-39, 40-44, 45-49, 50-54, 55-59

inv-nodes

受侵淋巴结数

0-2, 3-5, 6-8, 9-11, 12-14, 15-17, 18-20, 21-23, 24-26, 27-29, 30-32, 33-35, 36-39

node-caps

有无结节帽

yes, no

deg-malig

恶性肿瘤程度

1, 2, 3

breast

肿块位置

left, right

breast-quad

肿块所在象限

left-up, left-low, right-up, right-low, central

irradiat

是否放疗

yes,no

去除缺失值

In [6]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df = df[(df["node-caps"] != "?") & (df["breast-quad"] != "?")]

len(df)

Out[6]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
277

字段处理

In [7]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from sklearn.preprocessing import LabelEncoder

年龄段-age

In [8]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
age = df["age"].value_counts().reset_index()
age.columns = ["年龄段", "人数"]

age

可以看到数据中大部分的用户集中在40-59岁。对年龄段执行独热码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df = df.join(pd.get_dummies(df["age"]))
df.drop("age", axis=1, inplace=True)
df.head()

绝经-menopause

In [11]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
menopause = df["menopause"].value_counts().reset_index()
menopause

Out[11]:

index

menopause

0

premeno

149

1

ge40

123

2

lt40

5

In [12]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fig = px.pie(menopause,names="index",values="menopause")

fig.update_traces(
    textposition='inside',
    textinfo='percent+label')

fig.show()
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df = df.join(pd.get_dummies(df["menopause"]))  # 独热码

df.drop("menopause",axis=1, inplace=True)

肿瘤大小-tumor-size

In [14]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tumor_size = df["tumor-size"].value_counts().reset_index()

tumor_size

Out[14]:

index

tumor-size

0

30-34

57

1

25-29

51

2

20-24

48

3

15-19

29

4

10-14

28

5

40-44

22

6

35-39

19

7

0-4

8

8

50-54

8

9

5-9

4

10

45-49

3

In [15]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fig = px.bar(tumor_size,
             x="index",
             y="tumor-size",
             color="tumor-size",
             text="tumor-size")

fig.show()
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df = df.join(pd.get_dummies(df["tumor-size"]))

df.drop("tumor-size",axis=1, inplace=True)

受侵淋巴结数-inv-nodes

In [17]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df["inv-nodes"].value_counts()

Out[17]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
0-2      209
3-5       34
6-8       17
9-11       7
15-17      6
12-14      3
24-26      1
Name: inv-nodes, dtype: int64

In [18]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df = df.join(pd.get_dummies(df["inv-nodes"]))

df.drop("inv-nodes",axis=1, inplace=True)

有无结节帽-node-caps

In [19]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df["node-caps"].value_counts()

Out[19]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
no     221
yes     56
Name: node-caps, dtype: int64

In [20]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df = df.join(pd.get_dummies(df["node-caps"]).rename(columns={"no":"node_capes_no", "yes":"node_capes_yes"}))

df.drop("node-caps",axis=1, inplace=True)

恶性肿瘤程度-deg-malig

In [21]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df["deg-malig"].value_counts()

Out[21]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2    129
3     82
1     66
Name: deg-malig, dtype: int64

肿块位置-breast

In [22]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df["breast"].value_counts()

Out[22]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
left     145
right    132
Name: breast, dtype: int64

In [23]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df = df.join(pd.get_dummies(df["breast"]))

df.drop("breast",axis=1, inplace=True)

肿块所在象限-breast-quad

In [24]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
breast_quad = df["breast-quad"].value_counts().reset_index()

breast_quad

Out[24]:

index

breast-quad

0

left_low

106

1

left_up

94

2

right_up

33

3

right_low

23

4

central

21

In [25]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fig = px.bar(breast_quad,
             x="index",
             y="breast-quad",
             color="breast-quad",
             text="breast-quad")

fig.show()
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df = df.join(pd.get_dummies(df["breast-quad"]))

df.drop("breast-quad",axis=1, inplace=True)

是否放疗-irradiat

In [27]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df["irradiat"].value_counts()

Out[27]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
no     215
yes     62
Name: irradiat, dtype: int64

In [28]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df = df.join(pd.get_dummies(df["irradiat"]).rename(columns={"no":"irradiat_no","yes":"irradiat_yes"}))

df.drop("irradiat", axis=1, inplace=True)

是否复发-Class

这个是最终预测的因变量

In [29]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dic = {"no-recurrence-events":0, "recurrence-events":1}
df["Class"] = df["Class"].map(dic)  # 实施转换

df

复发和非复发的统计:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sns.countplot(df['Class'],label="Count")

plt.show()

样本不均衡处理

In [31]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 样本量分布

df["Class"].value_counts()

Out[31]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
0    196
1     81
Name: Class, dtype: int64

In [32]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from imblearn.over_sampling import SMOTE

In [33]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
X = df.iloc[:,1:]
y = df.iloc[:,0]

y.head()

Out[33]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
0    0
1    0
2    0
3    0
4    0
Name: Class, dtype: int64

In [34]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
groupby_df = df.groupby('Class').count()

# 输出原始数据集样本分类分布
groupby_df
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 建立SMOTE模型对象
model_smote = SMOTE()

# 输入数据做过抽样处理
x_smote_resampled, y_smote_resampled = model_smote.fit_resample(X, y)
# 将数据转换为数据框并命名列名
x_smoted = pd.DataFrame(x_smote_resampled,
                        columns=df.columns.tolist()[1:])
y_smoted = pd.DataFrame(y_smote_resampled,
                        columns=['Class'])

# 按列合并数据框
df_smoted = pd.concat([x_smoted, y_smoted],axis=1)

建模

相关性

分析每个新字段和因变量之间的相关性

In [36]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
corr = df_smoted.corr()
corr.head()

绘制相关性热力图:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fig = plt.figure(figsize=(12,8))
sns.heatmap(corr)

plt.show()

数据集划分

In [38]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
X = df_smoted.iloc[:,:-1]
y = df_smoted.iloc[:,-1]

from sklearn.model_selection import train_test_split

X_train,X_test,y_train,y_test = train_test_split(X,y,
                                                 test_size=0.20,
                                                 random_state=123)

决策树

In [39]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dt = DecisionTreeClassifier(max_depth=5)
dt.fit(X_train, y_train)

Out[39]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DecisionTreeClassifier(max_depth=5)

In [40]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 预测
y_prob = dt.predict_proba(X_test)[:,1]

# 预测的概率转成0-1分类
y_pred = np.where(y_prob > 0.5, 1, 0)
dt.score(X_test, y_pred)

Out[40]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1.0

In [41]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 混淆矩阵

confusion_matrix(y_test, y_pred)

Out[41]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
array([[29,  8],
       [19, 23]])

In [42]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 分类得分报告
print(classification_report(y_test, y_pred))
              precision    recall  f1-score   support

           0       0.60      0.78      0.68        37
           1       0.74      0.55      0.63        42

    accuracy                           0.66        79
   macro avg       0.67      0.67      0.66        79
weighted avg       0.68      0.66      0.65        79

In [43]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# roc
metrics.roc_auc_score(y_test, y_pred)

Out[43]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
0.6657014157014157

In [44]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# roc曲线

from sklearn.metrics import roc_curve, auc
false_positive_rate, true_positive_rate, thresholds = roc_curve(y_test, y_prob)
roc_auc = auc(false_positive_rate, true_positive_rate)

import matplotlib.pyplot as plt
plt.figure(figsize=(10,10))  # 画布
plt.title('ROC')  # 标题

plt.plot(false_positive_rate,  # 绘图
         true_positive_rate,
         color='red',
         label = 'AUC = %0.2f' % roc_auc)

plt.legend(loc = 'lower right') #  图例位置
plt.plot([0, 1], [0, 1],linestyle='--')  # 正比例直线

plt.axis('tight')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.show()

随机森林

In [45]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rf = RandomForestClassifier(max_depth=5)
rf.fit(X_train, y_train)

Out[45]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RandomForestClassifier(max_depth=5)

In [46]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 预测
y_prob = rf.predict_proba(X_test)[:,1]

# 预测的概率转成0-1分类
y_pred = np.where(y_prob > 0.5, 1, 0)
rf.score(X_test, y_pred)

Out[46]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1.0

In [47]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 混淆矩阵

confusion_matrix(y_test, y_pred)

Out[47]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
array([[31,  6],
       [14, 28]])

In [48]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# roc
metrics.roc_auc_score(y_test, y_pred)

Out[48]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
0.7522522522522522

In [49]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# roc曲线

from sklearn.metrics import roc_curve, auc
false_positive_rate, true_positive_rate, thresholds = roc_curve(y_test, y_prob)
roc_auc = auc(false_positive_rate, true_positive_rate)

import matplotlib.pyplot as plt
plt.figure(figsize=(10,10))  # 画布
plt.title('ROC')  # 标题

plt.plot(false_positive_rate,  # 绘图
         true_positive_rate,
         color='red',
         label = 'AUC = %0.2f' % roc_auc)

plt.legend(loc = 'lower right') #  图例位置
plt.plot([0, 1], [0, 1],linestyle='--')  # 正比例直线

plt.axis('tight')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.show()

梯度提升树

In [50]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from sklearn.ensemble import GradientBoostingClassifier

In [51]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gbc = GradientBoostingClassifier(loss='deviance',
                                 learning_rate=0.1,
                                 n_estimators=5,
                                 subsample=1,
                                 min_samples_split=2,
                                 min_samples_leaf=1,
                                 max_depth=3)

gbc.fit(X_train, y_train)

Out[51]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GradientBoostingClassifier(n_estimators=5, subsample=1)

In [52]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 预测
y_prob = gbc.predict_proba(X_test)[:,1]

# 预测的概率转成0-1分类
y_pred = np.where(y_prob > 0.5, 1, 0)
gbc.score(X_test, y_pred)

Out[52]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1.0

In [53]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 混淆矩阵
confusion_matrix(y_test, y_pred)

Out[53]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
array([[32,  5],
       [24, 18]])

In [54]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# roc
metrics.roc_auc_score(y_test, y_pred)

Out[54]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
0.6467181467181469

In [55]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# roc曲线

from sklearn.metrics import roc_curve, auc
false_positive_rate, true_positive_rate, thresholds = roc_curve(y_test, y_prob)
roc_auc = auc(false_positive_rate, true_positive_rate)

import matplotlib.pyplot as plt
plt.figure(figsize=(10,10))  # 画布
plt.title('ROC')  # 标题

plt.plot(false_positive_rate,  # 绘图
         true_positive_rate,
         color='red',
         label = 'AUC = %0.2f' % roc_auc)

plt.legend(loc = 'lower right') #  图例位置
plt.plot([0, 1], [0, 1],linestyle='--')  # 正比例直线

plt.axis('tight')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.show()

PCA降维

降维过程

In [56]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from sklearn.decomposition import PCA
pca = PCA(n_components=17)
pca.fit(X)

#返回所保留的17个成分各自的方差百分比
print(pca.explained_variance_ratio_)
[0.17513053 0.12941834 0.11453698 0.07323991 0.05889187 0.05690304
 0.04869476 0.0393374  0.03703477 0.03240863 0.03062932 0.02574137
 0.01887462 0.0180381  0.01606983 0.01453912 0.01318003]

In [57]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sum(pca.explained_variance_ratio_)

Out[57]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
0.9026686181152915

降维后数据

In [58]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
X_NEW = pca.transform(X)
X_NEW

Out[58]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
array([[ 1.70510215e-01,  5.39929099e-01, -1.04314303e+00, ...,
        -2.26541223e-01, -6.39332871e-02, -8.97923150e-02],
       [-9.01105403e-01,  8.01693088e-01,  5.92260258e-01, ...,
         9.66299251e-02,  1.40755806e-03, -2.74626972e-01],
       [-6.05200264e-01,  6.08455330e-01, -1.00524376e+00, ...,
         4.11416630e-02,  4.15705282e-02, -8.46941345e-02],
       ...,
       [ 1.40652211e-02,  5.35906106e-01,  5.64150123e-02, ...,
         1.70834934e-01,  7.11616391e-02, -1.72250445e-01],
       [-4.41363597e-01,  9.11950641e-01, -4.22184256e-01, ...,
        -4.13385344e-02, -7.64405982e-02,  1.04686148e-01],
       [ 1.98533663e+00, -4.74547396e-01, -1.52557494e-01, ...,
         2.72194184e-02,  5.71553613e-02,  1.78074886e-01]])

In [59]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
X_NEW.shape

Out[59]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(392, 17)

重新划分数据

In [60]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
X_train,X_test,y_train,y_test = train_test_split(X_NEW,y,test_size=0.20,random_state=123)

再用随机森林

In [61]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rf = RandomForestClassifier(max_depth=5)
rf.fit(X_train, y_train)

Out[61]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RandomForestClassifier(max_depth=5)

In [62]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 预测
y_prob = rf.predict_proba(X_test)[:,1]

# 预测的概率转成0-1分类
y_pred = np.where(y_prob > 0.5, 1, 0)
rf.score(X_test, y_pred)

Out[62]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1.0

In [63]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 混淆矩阵

confusion_matrix(y_test, y_pred)

Out[63]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
array([[26, 11],
       [13, 29]])

In [64]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# roc
metrics.roc_auc_score(y_test, y_pred)

Out[64]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
0.6965894465894465

In [65]:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# roc曲线

from sklearn.metrics import roc_curve, auc
false_positive_rate, true_positive_rate, thresholds = roc_curve(y_test, y_prob)
roc_auc = auc(false_positive_rate, true_positive_rate)

import matplotlib.pyplot as plt
plt.figure(figsize=(10,10))
plt.title('ROC')

plt.plot(false_positive_rate,
         true_positive_rate,
         color='red',
         label = 'AUC = %0.2f' % roc_auc)

plt.legend(loc = 'lower right')
plt.plot([0, 1], [0, 1],linestyle='--')

plt.axis('tight')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.show()

总结

数据预处理和特征工程出发,建立不同的树模型表现来看,随机森林表现的最好,AUC值高达0.81,在经过对特征简单的降维之后,我们选择前17个特征,它们的重要性超过90%,再次建模,此时AUC值达到0.83。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-6-2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
6大监督学习方法:实现毒蘑菇分类
本文是kaggle案例分享的第3篇,赛题的名称是:Mushroom Classification,Safe to eat or deadly poison? 数据来自UCI:https://archi
皮大大
2021/12/15
2.2K0
6大监督学习方法:实现毒蘑菇分类
医学图像 | 使用深度学习实现乳腺癌分类(附python演练)
乳腺癌是全球第二常见的女性癌症。2012年,它占所有新癌症病例的12%,占所有女性癌症病例的25%。
磐创AI
2019/09/24
2.7K0
医学图像 | 使用深度学习实现乳腺癌分类(附python演练)
常用机器学习代码汇总
皮大大
2023/08/25
4460
面试腾讯,基础考察太细致。。。
在不平衡数据集中,某些类别的样本数量远多于其他类别,这会导致模型更倾向于预测多数类,而忽略少数类。
Python编程爱好者
2024/06/04
1720
面试腾讯,基础考察太细致。。。
【机器学习实战】 手把手教学,kaggle贷款批准预测 (使用xgboost解决正负样本不平衡问题)
train.csv - 训练数据集;loan_status是二进制目标 test.csv - 测试数据集;
机器学习司猫白
2025/01/21
2070
【机器学习实战】 手把手教学,kaggle贷款批准预测 (使用xgboost解决正负样本不平衡问题)
Python从零开始第六章机器学习②逻辑回归实战(2)
训练模型 log_regress = linear_model.LogisticRegression() # Train the model log_regress.fit(X = train_features , y = train_label) # Check trained model intercept print(log_regress.intercept_) # Check trained model coefficients print(log_regre
用户1359560
2018/12/27
3960
Python从零开始第六章机器学习②逻辑回归实战(2)
基于随机森林的化合物活性二分类模型
基于随机森林算法的化合物二分类机器学习模型 ---- 代码示例 #导入依赖包 import pandas as pd import numpy as np from rdkit import Chem, DataStructs from rdkit.Chem import AllChem from rdkit.ML.Descriptors import MoleculeDescriptors from rdkit.Chem import Descriptors from rdkit.Chem.EState
DrugAI
2021/01/28
1.3K0
算法金 | 一文彻底理解机器学习 ROC-AUC 指标
在机器学习和数据科学的江湖中,评估模型的好坏是非常关键的一环。而 ROC(Receiver Operating Characteristic)曲线和 AUC(Area Under Curve)正是评估分类模型性能的重要工具。
算法金
2024/06/11
1.5K0
算法金 | 一文彻底理解机器学习 ROC-AUC 指标
机器学习中样本不平衡,怎么办?
在银行要判断一个"新客户是否会违约",通常不违约的人VS违约的人会是99:1的比例,真正违约的人 其实是非常少的。这种分类状况下,即便模型什么也不做,全把所有人都当成不会违约的人,正确率也能有99%, 这使得模型评估指标变得毫无意义,根本无法达到我们的"要识别出会违约的人"的建模目的。
数据STUDIO
2021/06/24
3.1K0
分类模型的评测指标
娃感冒了,把我传染了,他好了,我还没好O(∩_∩)O,请了两天直播课的假,带娃也被妈妈和老公全权承包,当了两天幸福的废物。今天开始复工复产咯,小朋友们珍惜你们的假期,明天还剩最后一天咯。
用户11414625
2024/12/20
590
分类模型的评测指标
Machine Learning-模型评估与调参 ——ROC曲线
如果需要理解ROC曲线,那你就需要先了解一下混淆矩阵了,具体的内容可以查看一下之前的文章,这里重点引入2个概念:
Sam Gor
2019/08/22
1.3K0
机器学习——决策树模型:Python实现
决策树模型既可以做分类分析(即预测分类变量值),也可以做回归分析(即预测连续变量值),分别对应的模型为分类决策树模型(DecisionTreeClassifier)及回归决策树模型(DecisionTreeRegressor)。
全栈程序员站长
2022/11/03
1.3K0
根据已给字符数据,训练逻辑回归、随机森林、SVM,生成ROC和箱线图
代码下载:here。 已知训练数据如下: 预处理代码如下: # -*- coding: utf-8 -*- """ Created on 2017 11.17 @author: liupeng """
MachineLP
2018/01/09
1.8K0
根据已给字符数据,训练逻辑回归、随机森林、SVM,生成ROC和箱线图
标准化SMOTE采样框架实现与应用
SMOTE(Synthetic Minority Oversampling Technique)是一种常用于缓解数据不均衡的算法。但是很多小伙伴表示在实际应用中有强烈的过拟合倾向。大多是因为使用流程不规范导致的。本文详细的介绍了一个梅老师自己写的SMOTE过采样流程,并通过一个案例,帮助大家理解其使用。
BBBlue
2019/09/25
1.4K0
标准化SMOTE采样框架实现与应用
乳腺癌预测_EDA_Models
在医学领域的不断创新中,技术的进步为疾病的早期预测和诊断提供了全新的可能性。乳腺癌作为女性最常见的癌症之一,对于其早期预测变得尤为关键。本文将引领您探索乳腺癌预测中的数据探索分析(Exploratory Data Analysis,简称EDA)以及相关的模型应用。通过深入挖掘乳腺癌数据集,我们将揭示隐藏在背后的模式和趋势,为医学领域的科学家、数据科学家和临床医生提供更有力的工具,以更准确地预测乳腺癌的风险。
老虎也淘气
2024/01/30
2710
乳腺癌预测_EDA_Models
机器学习集成学习与模型融合!
对比过kaggle比赛上面的top10的模型,除了深度学习以外的模型基本上都是集成学习的产物。集成学习可谓是上分大杀器,今天就跟大家分享在Kaggle或者阿里天池上面大杀四方的数据科学比赛利器---集成学习。
Datawhale
2020/08/20
1.1K0
机器学习集成学习与模型融合!
模型评估:评价指标-附sklearn API
主要有分类(classification)、回归(regression)、排序(ranking)、聚类(clustering)、热门主题模型(topic modeling)、推荐(recommendation)等。
百川AI
2021/10/19
2.4K0
机器学习14:模型评估与性能提升
6.2,验证曲线、学习曲线、ROC曲线、准确度、精确率、召回率、F1_Score
用户5473628
2019/08/08
1.1K0
使用逻辑回归模型预测用户购买会员意向
会员付费模式是互联网中常用的变现方式,并具有高用户忠诚度和粘性,帮助电商应用增加收入的优点。会员的销售模式,依赖于线下会销+线上直播+代理商电话销售的模式。为使用户有良好的用户体验,以及满足精细化运营的需求,如何在海量用户中筛选出有价值的用户成为会员转化运营工作的重点。 因此,本文采用了逻辑回归的算法,使用用户在平台上的行为数据特征(登录、协议、商品、交易等),通过模型预测出用户购买会员的概率,对于预测结果有较大概率购买会员的用户,进行重点触达,提高交易转化。
政采云前端团队
2023/10/16
1.1K0
使用逻辑回归模型预测用户购买会员意向
【机器学习】几种常用的机器学习调参方法
在机器学习中,模型的性能往往受到模型的超参数、数据的质量、特征选择等因素影响。其中,模型的超参数调整是模型优化中最重要的环节之一。超参数(Hyperparameters)在机器学习算法中需要人为设定,它们不能直接从训练数据中学习得出。与之对应的是模型参数(Model Parameters),它们是模型内部学习得来的参数。 以支持向量机(SVM)为例,其中C、kernel 和 gamma 就是超参数,而通过数据学习到的权重 w 和偏置 b则 是模型参数。实际应用中,我们往往需要选择合适的超参数才能得到一个好的模型。搜索超参数的方法有很多种,如网格搜索、随机搜索、对半网格搜索、贝叶斯优化、遗传算法、模拟退火等方法,具体内容如下。
Twcat_tree
2023/11/03
1.2K0
【机器学习】几种常用的机器学习调参方法
推荐阅读
相关推荐
6大监督学习方法:实现毒蘑菇分类
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档