python logisticregression_python 10大算法之二 LogisticRegression 笔记

使用的包

importmatplotlib.pyplot as pltimportpandas as pdimport numpy as np

from sklearn import datasets

获取数据

方式一 读取网页提供的数据:

df = pd.read_csv('http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data', header=None)

df.columns= ['d1', 'd2', 'd3', 'd4', 'd5']

X= df.iloc[:, [0, 3]].values # 取出2个特征,并把它们用Numpy数组表示

方式二  由于Iris是很有名的数据集,scikit-learn已经原生自带了

iris =datasets.load_iris()

X= iris.data[:, [0, 1, 2]] #1,2,3列

y = iris.target #结果集

方式三 scikit-learn随机数据生成

defget_data1():"""scikit-learn随机数据生成 make_regression生成回归模型数据

:return:"""

#X为样本特征,y为样本输出, coef为回归系数w,共100个样本,每个样本1个特征

#coef 默认为false true为线性模型

#noise 干扰 0为一条直线上的点

X, y, coef = datasets.make_regression(n_samples=100, n_features=1, noise=30, coef=True)#画图

plt.scatter(X, y, color='black')

plt.plot(X, X* coef, color='blue', linewidth=3)

plt.xticks()

plt.yticks()

plt.show()

defget_data2():"""scikit-learn随机数据生成 make_blobs生成聚类模型数据

:return:"""

#X为样本特征,Y为样本簇类别,

#共100个样本,每个样本2个特征,共3个簇,

#random_state 为具体数字表示每次生成的随机数不变

#簇中心

centers = [[1, 5], [2, 3], [5, 1]]#簇方差

cluster_std = [0.4, 0.3, 0.2]

X, y= datasets.make_blobs(n_samples=100, n_features=2, centers=centers, cluster_std=cluster_std, random_state=1)#画图 按照y区分颜色

plt.scatter(X[:, 0], X[:, 1], marker='o', c=y)

plt.xticks()

plt.yticks()

plt.show()

train_test_split

#from sklearn.cross_validation import train_test_split

from sklearn.model_selection importtrain_test_split

X_train, X_test, y_train, y_test= train_test_split(X, y, test_size=0.3, random_state=0)

train_test_split 随机划分训练集和测试集

参数解释:

train_data:所要划分的样本特征集

train_target:所要划分的样本结果

test_size:样本占比,如果是整数的话就是样本的数量

random_state:是随机数的种子。

随机数种子:其实就是该组随机数的编号,在需要重复试验的时候,保证得到一组一样的随机数。比如你每次都填1,其他参数一样的情况下你得到的随机数组是一样的。但填0或不填,每次都会不一样。

随机数的产生取决于种子,随机数和种子之间的关系遵从以下两个规则:种子不同,产生不同的随机数;种子相同,即使实例不同也产生相同的随机数。

数据转换 - 标准化

#标准化 -- 为了追求机器学习和最优化算法的最佳性能,我们将特征缩放

from sklearn.preprocessing importStandardScaler

sc=StandardScaler()

sc.fit(X_train)#估算每个特征的平均值和标准差

print(sc.mean_) #查看特征的平均值,由于Iris我们只用了两个特征,所以结果是array([ 3.82857143, 1.22666667])

print(sc.scale_) #查看特征的标准差,这个结果是array([ 1.79595918, 0.77769705])

X_train_std =sc.transform(X_train)#注意:这里我们要用同样的参数来标准化测试集,使得测试集和训练集之间有可比性

X_test_std = sc.transform(X_test)

X_combined_std = np.vstack((X_train_std, X_test_std))

y_combined = np.hstack((y_train, y_test))

感知器 - Perceptron

from sklearn.metrics importaccuracy_score#训练感知机模型

from sklearn.linear_model importPerceptron#n_iter:可以理解成梯度下降中迭代的次数

#eta0:可以理解成梯度下降中的学习率

#random_state:设置随机种子的,为了每次迭代都有相同的训练集顺序

ppn = Perceptron(max_iter=40, eta0=0.1, random_state=0)

ppn.fit(X_train_std, y_train)#分类测试集,这将返回一个测试结果的数组

y_pred =ppn.predict(X_test_std)#计算模型在测试集上的准确性,我的结果为0.9,还不错

print('训练结果的准确性:', accuracy_score(y_test, y_pred))

逻辑回归-LogisticRegression

from sklearn.linear_model importLogisticRegression

lr= LogisticRegression(C=1000.0, random_state=0)

lr.fit(X_train_std, y_train)

y_pred= lr.predict_proba(X_test_std) #查看第一个测试样本属于各个类别的概率

print(y_test)print(y_pred)print('训练结果的准确性:', metrics.accuracy_score(y_test, lr.predict(X_test_std)))

官方逻辑回归案例:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值