from sklearn.externals import joblib
逻辑回归:线性回归的式子作为输入,解决二分类问题, 也可以得出概率值
广告点击率
是否为垃圾邮件
是否患病
金融诈骗
虚假账号
点击
没点击
将线性回归的输入转变为一个分类问题
逻辑回归也是一个算法自我学习的过程
当事件发生的概率为1时,损失函数为0,发生的概率越小,损失越大
逻辑回归只盼定属于y=1的概率
目的:减少损失函数的大小
逻辑回归的目的:更新权重
损失函数
解决方案(无法最终解决问题,尽量改善,尽管找不到全局最低点,但效果很好)
与岭回归一样,可以解决过拟合问题
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression, SGDRegressor,Ridge,LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import classification_report
import numpy as np
import joblib
import pandas as pd
def logistic():
'''
逻辑回归做二分类进行癌症预测(根据细胞的属性特征)
'''
#构造列标签
column=["sample code number","clump thickness","uniformtity 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("http://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data",names=column)
print(data)
#缺失值进行数据处理
data=data.replace(to_replace="?",value=np.nan)
#将np.nan删除
data=data.dropna()
#进行数据分割,特征值为第2列到10列,目标值为第11列
x_train, x_test, y_train, y_test = train_test_split(data[column[1:10]], data[column[10]], test_size=0.25)
#进行标准化处理, 目标值不需要标准化 预测属于4的概率(癌症发生的概率)
std=StandardScaler()
x_train=std.fit_transform(x_train)
x_test=std.fit_transform(x_test)
#逻辑回归预测
lg=LogisticRegression(C=1.0)
lg.fit(x_train,y_train)
print(lg.coef_)
y_predict=lg.predict(x_test)
print("准确率:",lg.score(x_test,y_test))
#考虑召回率
print("召回率:",classification_report(y_test, y_predict, labels=[2,4],target_names=["良性","恶性"]))
if __name__=="__main__":
logistic()
import pandas as pd
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
#读取4张表
prior=pd.read_csv("./data/order_products__prior.csv")
products=pd.read_csv("./data/products.csv")
orders=pd.read_csv("./data/orders.csv")
aisles=pd.read_csv("./data/aisles.csv")
pd.set_option('display.max_columns', None)
#合并四张表到一张表当中 (用户-物品类别)
_mg=pd.merge(prior,products,on=["product_id","product_id"])
_mg=pd.merge(_mg, orders,on=["order_id","order_id"])
mt=pd.merge(_mg,aisles,on=["aisle_id","aisle_id"])
print(mt.head(10))
#建立行和列
# 交叉表 特殊的分组工具
cross=pd.crosstab(mt["user_id"],mt["aisle"])
#进行主成分分析
pca=PCA(n_components=0.9)
data=pca.fit_transform(cross)
#假设用户一共分为四个类别
#把样本数量减少
x=data[:500]
#聚类
km=KMeans(n_clusters=4)
km.fit(x)
predict=km.predict(x)
#显示聚类的结果
plt.figure(figsize=(10,10))
#建立四个颜色的列表
color=["red","blue","green","orange"]
color=[color[i] for i in predict]
plt.scatter(x[:,1],x[:,20],color=color)
plt.xlabel("1")
plt.ylabel("20")
plt.show()