ruanbaiQAQ

逻辑回归是解决二分类问题的利器:

广告点击率

判断用户的性别

预测用户是否会购买给定的商品类

判断一条评论是正面的还是负面的

image

image

逻辑回归公式:

image

image

image

良/恶性乳腺癌肿瘤预测

API:sklearn.linear_model.LogisticRegression

image

import pandas as pd
import numpy as np

# col_name 为列名
col_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\']

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

f.replace(to_replace=\'?\',value=np.nan,inplace=True)
f.dropna(inplace=True)

# 进行数据分割
from sklearn.model_selection import train_test_split
x_train,  x_test,y_train, y_test = train_test_split(f[col_name[1:10]],f[col_name[10]],test_size=.25)

# 标准化
from sklearn.preprocessing import StandardScaler
std = StandardScaler()
x_train = std.fit_transform(x_train)
x_test = std.transform(x_test)

# 逻辑回归预测
from sklearn.linear_model import LogisticRegression
lg = LogisticRegression(C=1.0)
lg.fit(x_train,y_train)
lg.coef_

print("精确率",lg.score(x_test,y_test))

from sklearn.metrics import classification_report,mean_squared_error
print(classification_report(y_test,lg.predict(x_test),labels=[2,4],target_names=[\'良性\',\'恶性\']))

image

聚类

image

非监督学习(unsupervised learning)主要方法:k-means

image

步骤:

1、随机设置K个特征空间内的点作为初始的聚类中心

2、对于其他每个点计算到K个中心的距离,未知的点选择最近的一个聚类
中心点作为标记类别

3、接着对着标记的聚类中心之后,重新计算出每个聚类的新中心点(平
均值)

4、如果计算得出的新中心点与原中心点一样,那么结束,否则重新进行
第二步过程

from sklearn.decomposition import PCA
import numpy as np
import pandas as pd
\'\'\'
    prior = pd.read_csv(r"D:\Python\机器学习代码和资料\instacart-market-basket-analysis\order_products__prior.csv")
    products = pd.read_csv(r"D:\Python\机器学习代码和资料\instacart-market-basket-analysis\products.csv")
    orders = pd.read_csv(r"D:\Python\机器学习代码和资料\instacart-market-basket-analysis\orders.csv")
    aisles = pd.read_csv(r"D:\Python\机器学习代码和资料\instacart-market-basket-analysis\aisles.csv")

    # 合并四张表到一张表
    _mg = pd.merge(pd.merge(prior,products,on=[\'product_id\', \'product_id\']),orders,on=[\'order_id\',\'order_id\'])
    mt = pd.merge(_mg,aisles,on=[\'aisle_id\',\'aisle_id\'])
    # mt.to_csv(r"D:\Python\机器学习代码和资料\instacart-market-basket-analysis\mt.csv")
\'\'\'
mt = pd.read_csv(r"D:\Python\机器学习代码和资料\instacart-market-basket-analysis\mt.csv")
cross = pd.crosstab(mt[\'user_id\'], mt[\'aisle\']) # 用户id(行)和所购商品所属具体物品类别(列)


# 进行主成分分析
pca = PCA(n_components=0.9)
data = pca.fit_transform(cross)

# 进行聚类

from sklearn.cluster import KMeans

# 取样本切片,减少数量
x = data[:500]

# 假设用户一共分为四个类别
km = KMeans(n_clusters=4)
km.fit(x)
predict = km.predict(x)

# 显示聚类的结果
from matplotlib import pyplot as plt
plt.figure(figsize=(10,10))
# 建立四个颜色的列表
colored = [\'orange\',\'green\',\'blue\',\'purple\']
colr = [colored[i] for i in predict]
plt.scatter(x[:,1],x[:,20],color=colr) # 取x的第1列()和20列

# 评判聚类效果,轮廓系数
from sklearn.metrics import silhouette_score
silhouette_score(x,predict)

image

image

如果sc_i 小于0,说明a_i 的平均距离大于最近的其他簇。
聚类效果不好

如果sc_i 越大,说明a_i 的平均距离小于最近的其他簇。
聚类效果好

轮廓系数的值是介于 [-1,1] ,越趋近于1代表内聚度和分离度都相对较优

image

分类:

技术点:

相关文章:

  • 2021-05-21
  • 2022-12-23
  • 2022-12-23
  • 2021-06-21
  • 2021-04-08
  • 2021-06-08
  • 2021-11-27
猜你喜欢
  • 2022-02-12
  • 2022-12-23
  • 2022-12-23
  • 2021-12-27
  • 2022-12-23
  • 2021-12-04
相关资源
相似解决方案