机器学习笔记(3)

线性回归

如何判断是不是线性回归?

看目标值——连续型的数据

广义线性模型

自变量是一次的(线性关系)

y = w1x1 + w2x2 + w3x3 + …… + wnxn + b

参数是一次的(非线性关系)

y = w1x1 + w2x1^2 + w3x1^3 + w4x2^3 + …… + b

线性关系一定是线性模型

线性模型不一定是线性关系

非线性关系

线性回归的损失和优化原理

目标:求模型参数,模型参数能够使得预测准确

真实值与预测值之间的差距存在的关系就用:损失函数/cost/成本函数/目标函数 来衡量

优化损失

优化方法

正规方程

梯度下降

检验回归模型的准确   yi :i是下标 即yi

正规方程用得少

欠拟合与过拟合

L2(Ridge回归、岭回归):

J(w)=损失函数 + λ*惩罚项

λ:惩罚系数

惩罚项:权重的平方求和(为的是减小高次项特征的影响)

L1正则化(LASSO):

J(w)=损失函数 + λ*|惩罚项|

线性回归的改进

逻辑回归(分类算法)

逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归,但是它与回归之间有一定的联系。由于算法的简单和高效,在实际中应用非常广泛。

线型回归的输出 就是 逻辑回归 的输入

将h代入到sigmoid函数中的x  映射到sigmoid函数 变成[0,1]区间

那么如何去衡量逻辑回归的预测结果与真实结果的差异呢?

优化权重w的值

def cancer_demo():
    column_name = ['Sample code number', 'Clump Thickness', 'Uniformity of Cell Size', 'Uniformity of Cell Shape',
                   'Marginal Adhesion', 'Single Epithelial Cell Size', 'Bare Nuclei', 'Bland Chromatin',
                   'Normal Nucleoli', 'Mitoses', 'Class']

    data = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data",
                       names=column_name)

    data = data.replace(to_replace="?", value=np.nan)
    data.dropna(inplace=True)

    x = data.iloc[:, 1:-1]
    y = data["Class"]
    x_train, x_test, y_train, y_test = train_test_split(x, y)

    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)

    estimator = LogisticRegression()
    estimator.fit(x_train, y_train)

    print("逻辑回归权重:\n", estimator.coef_)
    print("逻辑回归偏置:\n", estimator.intercept_)

    # 模型评估
    y_predict = estimator.predict(x_test)  # 方法1 测试集送入模型,得到预测值
    print(y_predict)
    print(y_test == y_predict)  # 比对预测值和真实值
    score = estimator.score(x_test, y_test)  # 方法2 测试集x_test送入模型得到预测值,然后和y_test比对,得到acc
    print(score)

    return None


if __name__ == '__main__':
cancer_demo()


report = classification_report(y_test, y_predict, labels=[2, 4], target_names=["良性", "恶性"])
print(report)

样本不均衡的情况下,召回率就不准确

TPR是召回率的公式

当TPR=FPR是,预测效果最差

y_true = np.where(y_test > 3, 1, 0)
    roc = roc_auc_score(y_true, y_predict)
print("AUC指标:\n", roc)

我们可以怎样最有用地对其进行归纳和分组?我们可以怎样以一种压缩格式有效地表征数据?这都是无监督学习的目标,之所以称之为无监督,是因为这是从无标签的数据开始学习的。

评估聚类效果

高内聚,低耦合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值