logistics二分类
binaryclassification
- #DATASET: https://archive.ics.uci.edu/ml/datasets/Glass+Identification
import numpy as np- import matplotlib.pyplot as plt
- import pandas as pd
- import sklearn
- import sklearn.preprocessing as pre
- df=pd.read_csv('data\glassi\glass.data')
- df.head()
id | RI | Na | Mg | Al | Si | K | Ca | Ba | Fe | class | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 1.52101 | 13.64 | 4.49 | 1.10 | 71.78 | 0.06 | 8.75 | 0.0 | 0.0 | 1 |
1 | 2 | 1.51761 | 13.89 | 3.60 | 1.36 | 72.73 | 0.48 | 7.83 | 0.0 | 0.0 | 1 |
2 | 3 | 1.51618 | 13.53 | 3.55 | 1.54 | 72.99 | 0.39 | 7.78 | 0.0 | 0.0 | 1 |
3 | 4 | 1.51766 | 13.21 | 3.69 | 1.29 | 72.61 | 0.57 | 8.22 | 0.0 | 0.0 | 1 |
4 | 5 | 1.51742 | 13.27 | 3.62 | 1.24 | 73.08 | 0.55 | 8.07 | 0.0 | 0.0 | 1 |
- X,y=df.iloc[:,1:-1],df.iloc[:,-1]
X,y=np.array(X),np.array(y)
#change the value the element
for idx,class_name in enumerate(sorted(list(set(y)))):
y[y==class_name]=idx
- y
- array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], dtype=int64)
- #make the matrix's elements 2 value
- #if element doesn't equals to 1 then make it 0
- #'1' stands for the '2' class
- for i in range(len(y)):
- if y[i]!=1:
- y[i]=0
- #split our training dataset randomly
- from sklearn.model_selection import train_test_split
- X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.15,random_state=44)
- X_train.shape,y_train.shape,X_test.shape,y_test.shape
- ((181, 9), (181,), (33, 9), (33,))
- f_mean=np.mean(X_train,axis=0)
- f_std=np.std(X_train,axis=0)
- f_mean,f_std
- (array([1.51832884e+00, 1.33736464e+01, 2.69287293e+00, 1.46425414e+00,
- 7.26391160e+01, 5.17016575e-01, 8.95314917e+00, 1.71104972e-01,
- 6.02762431e-02]),
- array([0.00300427, 0.79769555, 1.42353328, 0.49169919, 0.77056863,
- 0.69105168, 1.42892902, 0.5002639 , 0.10131419]))
- #standardize training set
- X_train=(X_train-f_mean)/f_std
- X_test=(X_test-f_mean)/f_std
- theta = np.zeros((X_train.shape[1] + 1))
- theta.shape
- (10,)
- #add constant parameter
- X_train = np.concatenate((np.ones((X_train.shape[0], 1)), X_train), axis=1)
- X_test = np.concatenate((np.ones((X_test.shape[0], 1)), X_test), axis=1)
- X_train.shape,X_test.shape,theta.shape
- ((181, 10), (33, 10), (10,))
- #initialize the parameter
- np.random.seed(42)
- theta = np.random.rand(*theta.shape)
- theta
- array([0.37454012, 0.95071431, 0.73199394, 0.59865848, 0.15601864,
- 0.15599452, 0.05808361, 0.86617615, 0.60111501, 0.70807258])
- #cross_entropy_loss: loss function
- #h: hypothesis function
- #gradient: gradient function
- num_epoch=500000
- for epoch in range(num_epoch):
- logist = np.dot(X_train, theta)
- h = 1 / (1 + np.exp(-logist))
- cross_entropy_loss = (-y_train * np.log(h) - (1 - y_train) * np.log(1 - h)).mean()
- gradient = np.dot((h - y_train), X_train) / y_train.size
- theta = theta - 0.01*gradient
- if epoch%100000==0:
- print('Epoch={}\tLoss={}'.format(epoch,cross_entropy_loss))
- Epoch=0 Loss=0.9770836920534414
- Epoch=100000 Loss=0.5884129057196792
- Epoch=200000 Loss=0.5828823869347305
- Epoch=300000 Loss=0.5798937167992417
- Epoch=400000 Loss=0.5782071252958373
- h_test = 1 / (1 + np.exp(-np.dot(X_test, theta)))
- #accurancy
- ((h_test > 0.5) == y_test).sum() / y_test.size
- 0.8484848484848485
logistics二分类的更多相关文章
- R数据分析:二分类因变量的混合效应,多水平logistics模型介绍
今天给大家写广义混合效应模型Generalised Linear Random Intercept Model的第一部分 ,混合效应logistics回归模型,这个和线性混合效应模型一样也有好几个叫法 ...
- 【原】Spark之机器学习(Python版)(二)——分类
写这个系列是因为最近公司在搞技术分享,学习Spark,我的任务是讲PySpark的应用,因为我主要用Python,结合Spark,就讲PySpark了.然而我在学习的过程中发现,PySpark很鸡肋( ...
- Kaggle实战之二分类问题
0. 前言 1. MNIST 数据集 2. 二分类器 3. 效果评测 4. 多分类器与误差分析 5. Kaggle 实战 0. 前言 "尽管新技术新算法层出不穷,但是掌握好基础算法就能解决手 ...
- 准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure(对于二分类问题)
首先我们可以计算准确率(accuracy),其定义是: 对于给定的测试数据集,分类器正确分类的样本数与总样本数之比.也就是损失函数是0-1损失时测试数据集上的准确率. 下面在介绍时使用一下例子: 一个 ...
- 监督学习——logistic进行二分类(python)
线性回归及sgd/bgd的介绍: 监督学习--随机梯度下降算法(sgd)和批梯度下降算法(bgd) 训练数据形式: (第一列代表x1,第二列代表 x2,第三列代表 数据标签 用 0/ ...
- keras实现简单性别识别(二分类问题)
keras实现简单性别识别(二分类问题) 第一步:准备好需要的库 tensorflow 1.4.0 h5py 2.7.0 hdf5 1.8.15.1 Keras 2.0.8 opencv-p ...
- Logistic回归二分类Winner or Losser----台大李宏毅机器学习作业二(HW2)
一.作业说明 给定训练集spam_train.csv,要求根据每个ID各种属性值来判断该ID对应角色是Winner还是Losser(0.1分类). 训练集介绍: (1)CSV文件,大小为4000行X5 ...
- matlab-逻辑回归二分类(Logistic Regression)
逻辑回归二分类 今天尝试写了一下逻辑回归分类,把代码分享给大家,至于原理的的话请戳这里 https://blog.csdn.net/laobai1015/article/details/7811321 ...
- tensorflow实现二分类
读万卷书,不如行万里路.之前看了不少机器学习方面的书籍,但是实战很少.这次因为项目接触到tensorflow,用一个最简单的深层神经网络实现分类和回归任务. 首先说分类任务,分类任务的两个思路: 如果 ...
随机推荐
- Java-判断是否为回文数
/** * @ClassName: IsPalindrome * @author: bilaisheng * @date: 2017年9月19日 下午2:54:08 * 判断是否为回文数 * true ...
- HDU-1358-Period(KMP, 循环节)
链接: https://vjudge.net/problem/HDU-1358#author=0 题意: For each prefix of a given string S with N char ...
- luoguP2863 [USACO06JAN]牛的舞会The Cow Prom
P2863 [USACO06JAN]牛的舞会The Cow Prom 123通过 221提交 题目提供者 洛谷OnlineJudge 标签 USACO 2006 云端 难度 普及+/提高 时空限制 1 ...
- windows下我的工作环境
目录 前言 需要的软件 环境 插件 快捷键 前言 为了更好地训练,所以机房把系统刷成了noi linux+win7 但是我理想的工作环境是 ubuntu16.04 及以上或 win10. 平时用noi ...
- axios 的坑
必须安装axios 和qs 1.main.js中的配置 import axios from 'axios' import qs from 'qs'; axios.defaults.headers.po ...
- 记一次Cloudera中页面监控失效问题
因为做了cdh的迁移,启动后所有服务都是正常执行,不影响操作,但是尴尬的是,页面上的图表监控不见了 这种情况的根本原因就是: Host Monitor和Service Monitor服务失效! 解决: ...
- Vue_(基础)商品管理-demo
实现对商品的增加.删除.数量的修改功能 删除商品可选择直接删除当前商品.删除选中商品.删除所有商品 添加商品时会自动添加日期字段 商品的属性 goods : { id : '', name : '', ...
- Warning: setcookie() expects parameter 3 to be long, string given
Warning: setcookie() expects parameter 3 to be long, string given 这个是我用php7.0会报这个错误, 切换低版本php5.6就ok
- zeppelin 无法连接一个已有的standalone模式的spark集群
SparkInterpreter.java 这个文件里面读取master的属性有些问题: 原来代码中"master"属性的获取的地方应该是错了.设置和读取这个属性的对象不是同一个 ...
- 一、基础篇--1.2Java集合-HashMap源码解析
https://www.cnblogs.com/chengxiao/p/6059914.html 散列表 哈希表是根据关键码值而直接进行访问的数据结构.也就是说,它能通过把关键码值映射到表中的一个位 ...