logistic回归算法实现贵阳市湖泊水质自动分类


关键字:机器学习、数据分析、水质分类。


需求背景

《贵阳市湖泊监测数据》来源于贵阳市政府数据开放平台,在下载的2017年湖泊监测数据中,按照《地表水环境质量标准》(GB 3838-2002)对每期湖泊监测数据分为了五类水质,而下载的2016年湖泊监测数据并未进行分类。下面我们将基于2017年的监测数据和分类成果,根据logistic回归算法建立数据模型,对2016年的监测数据自动进行分类。

算法简介

logistic回归算法是统计学习中的经典分类算法,属于对数线性模型。logistic回归的主要思想是:根据现有公式对分类边界线建立回归公式,以此进行分类。logistic回归的假设函数是广义线性函数,损失函数可选用L1范数正则化或L2范数正则化,优化方法可选用梯度下降法或拟牛顿法计算数值解,或者用最小二乘法计算解析解。

数据预处理

  • 训练数据集和测试数据集

2017年贵阳市湖泊水质监测数据,包含2个湖泊11个断面,共12期监测数据以及水质分类,有效特征32列,合计132行,前100行作为训练集,其余的作为测试集。

import numpy as np

data = np.loadtxt('./trainset.csv',dtype=float,delimiter=',',skiprows=1)
#划分数据集
train_X = data[:100,2:-1]
train_y = data[:100,-1]
test_X = data[100:,2:-1]
test_y = data[100:,-1]
  • 预测数据集

2016年贵阳市湖泊水质监测数据,包含1个湖泊6个断面,共11期监测数据,无水质分类,有效特征32列,合计66行。

predixdata = np.loadtxt('./classset.csv',dtype=float,delimiter=',',skiprows=1)
predix_X = predixdata[:,2:-1]
  • 均值化填充

对没有监测数据的记录用该列的平均值手动进行了填充,修正了非数值型的数据。也可以借助sklearn.preprocessing中Imputer工具处理。

from sklearn.preprocessing import Imputer

#缺失值插补
imp = Imputer(missing_values='--', strategy='mean', axis=0)
imp.fit(train_X)
  • 主成分分析(PCA)

由于特征列过多,在超过27列后工具报错。在测试前几列的时候,自动划分的效果不是很好,所以暂未处理该项。

from sklearn.decomposition import PCA

#主成分分析
pca=PCA(n_components='mle',svd_solver='full')
pca.fit(train_X)
print(pca.explained_variance_ratio_)
print(pca.n_components_)
  • 标准化(Standardization)

由于数据存在噪声值,为避免中心化的影响选用z-score处理。公式为z=(x-μ)/σ。其中x为数值,μ为平均数,σ为标准差。

from sklearn.preprocessing import StandardScaler

#标准化
scaler = StandardScaler()
std_train_X = scaler.fit_transform(train_X)
std_test_X = scaler.transform(test_X)

模型生成

  • 选择模型

直接调用sklearn.linear_model的LogisticRegression,multi_class选用multinomial(多分类,不选的话为二分类),solver选用lbfgs(拟牛顿法的一种)。

from sklearn.preprocessing import StandardScaler

#选择模型
lor = LogisticRegression(random_state=0,multi_class='multinomial',solver='lbfgs') 
  • 训练模型

#训练模型
lor.fit(std_train_X,train_y)
  • 自动分类

#自动分类
predict_test_y = lor.predict(predix_X)

模型评价

需要人工将预测数据集的水质分类,再用真值和预测值对比分析。这里是用测试集评价,评价分数如下:

lor.score(std_test_X,test_y)
评价结果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容