Mongodb4.2.0 副本集 + 分片 + 自动运维脚本
MongoDB4.2.0分片+副本集集群搭建
现根据需求在平台搭建一个有16台主机的MongoDB集群,主要以下关键点:
根据最新版本MongoDB推荐,配置文件采用yaml方式来配置
一共16台服务器,即16个节点。对数据集进行分片,共分8个shard,3个config节点,5个路由节点
环境准备
服务器规划:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647CentOS Linux release 7.6.1810MongoDB 4.2.0mongodb-linux-x86_64-4.2.0.tgz 二进制包shard分片主机: shard1: IP:cache05:27001(主) IP:cache06:27001(备) IP:cache08:27001(仲) shard2: IP:cache07:27002(主) IP:cache08:27002(备) IP:cache06:27002(仲) ...
机器学习之特征工程-特征选择
特征选取(Feature Selection)技术的目标是找到原始数据维度中的一个有用的子集,再运用一些有效的算法,实现数据的聚类、分类以及检索等任务。
根据特征选择的形式又可以将特征选择方法分为3种:
Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。
Wrapper:包装法,根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征。
Embedded:嵌入法,先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter方法,但是是通过训练来确定特征的优劣。
特征选择主要有两个目的:
减少特征数量、降维,使模型泛化能力更强,减少过拟合;
增强对特征和特征值之间的理解
1、特征选择 (feature_selection)
降维是指在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关”主变量的过程
1. 1 移除低方差的特征 (Removing features with low variance)
假设某特征的特征值只有0和1,并且在所有输入样本中,95 ...
机器学习之特征工程-特征预处理(标准化/归一化)
通常,在Data Science中,预处理数据有一个很关键的步骤就是数据的标准化。
一、标准化/归一化的好处
1.1 提升模型精度
在机器学习算法的目标函数(例如SVM的RBF内核或线性模型的l1和l2正则化),许多学习算法中目标函数的基础都是假设所有的特征都是零均值并且具有同一阶数上的方差。如果某个特征的方差比其他特征大几个数量级,那么它就会在学习算法中占据主导位置,导致学习器并不能像我们说期望的那样,从其他特征中学习。
举一个简单的例子,在KNN中,我们需要计算待分类点与所有实例点的距离。假设每个实例点(instance)由n个features构成。如果我们选用的距离度量为欧式距离,如果数据预先没有经过归一化,那么那些绝对值大的features在欧式距离计算的时候起了决定性作用,soga。 从经验上说,归一化是让不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。
1.2 提升收敛速度
对于线性model来说,数据归一化后,最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解。
对于神经网络模型,避免饱和是一个需要考虑的因素,通常参数的选择决定于input ...
机器学习之特征工程-特征抽取
1、特征提取
1.1包括将任意数据(如文本或图像)转换为可用于机器学习的数字特征
注:特征值化是为了计算机更好的去理解数据
字典特征提取(特征离散化)
文本特征提取
图像特征提取(深度学习将介绍)
2、字典特征提取
作用:对字典数据进行特征值化将其转换为One-hot编码。 类:sklearn.feature_extraction.DicVectorizer
sklearn.feature_extraction.DictVectorizer(sparse=True,…)
DictVectorizer.fit_transform(X) X:字典或者包含字典的迭代器返回值:返回sparse矩阵
DictVectorizer.inverse_transform(X) X:array数组或者sparse矩阵 返回值:转换之前数据格式
DictVectorizer.get_feature_names() 返回类别名称
2.1代码
数据: [{‘city’: ‘北京’,‘temperature’:100} {‘city’: ‘上海’,‘temperature’:60} {‘ci ...
机器学习之特征工程-特征工程介绍
1、为什么需要特征工程(Feature Engineering)
机器学习领域的大神Andrew Ng(吴恩达)老师说“Coming up with features is difficult, time-consuming, requires expert knowledge. “Applied machine learning” is basically feature engineering. ” 注:业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。
2、什么是特征工程
特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。从而提高了对未知数据的预测准确性。
对于这个概念,不用过多理解,是一个比较模糊广泛的概念
意义:直接影响到模型的预测结果
特征工程包含内容
特征抽取
特征预处理
特征选择
特征降维
3、特征工程所需工具
3.1Scikit-learn工具介绍
python语言的机器学习工具。
scikit-learn包括许多致命的机器学习算法的实现。
scikit-learn文档完善,容易上 ...
Python Pandas 数据分析实例1
USA.gov Data from Bitly(USA.gov数据集)
2011年,短链接服务(URL shortening service)商Bitly和美国政府网站USA.gov合作,提供了一份从用户中收集来的匿名数据,这些用户使用了结尾为.gov或.mil的短链接。在2011年,这些数据的动态信息每小时都会保存一次,并可供下载。不过在2017年,这项服务被停掉了。
代码实例
import json
from collections import defaultdict
from collections import Counter
import pandas as pd
import numpy as np
def get_counts2(sequence): # 优化方法
counts = defaultdict(int) # 所有的值均会被初始化为0
for x in sequence:
counts[x] += 1
return counts
def get_counts(sequence):
counts = {}
for x in sequence:
if x ...
Python Pandas 分组连接
任何分组(groupby)操作都涉及原始对象的以下操作之一。它们是 -
分割对象
应用一个函数
结合的结果
在许多情况下,我们将数据分成多个集合,并在每个子集上应用一些函数。在应用函数中,可以执行以下操作 -
聚合 - 计算汇总统计
转换 - 执行一些特定于组的操作
过滤 - 在某些情况下丢弃数据
将数据拆分成组
Pandas对象可以分成任何对象。有多种方式来拆分对象,如 -
obj.groupby(‘key’)
obj.groupby([‘key1’,’key2’])
obj.groupby(key,axis=1)
聚合
聚合函数为每个组返回单个聚合值。当创建了分组(group by)对象,就可以对分组数据执行多个聚合操作。 一个比较常用的是通过聚合或等效的agg方法聚合
一次应用多个聚合函数
通过分组系列,还可以传递函数的列表或字典来进行聚合,并生成DataFrame作为输出 -
转换
分组或列上的转换返回索引大小与被分组的索引相同的对象。因此,转换应该返回与组块大小相同的结果。
过滤
过滤根据定义的标准过滤数据并返回数据的子集。filter()函数用于过滤数据
Pa ...
Python Pandas 对缺失数据的处理
数据丢失(缺失)在现实生活中总是一个问题。 机器学习和数据挖掘等领域由于数据缺失导致的数据质量差,在模型预测的准确性上面临着严重的问题。 在这些领域,缺失值处理是使模型更加准确和有效的重点。 现在来看看如何处理使用_Pandas_的缺失值(如NA或NaN)。
检查缺失值
为了更容易地检测缺失值(以及跨越不同的数组dtype),Pandas提供了isnull()和notnull()函数,它们也是Series和DataFrame对象的方法 -
缺少数据的计算
在求和数据时,NA将被视为0
如果数据全部是NA,那么结果将是NA
清理/填充缺少数据
_Pandas_提供了各种方法来清除缺失的值。fillna()函数可以通过几种方法用非空数据“填充”NA值,在下面的章节中将学习和使用。
用标量值替换NaN
以下程序显示如何用0替换NaN。
填写NA前进和后退
使用重构索引章节讨论的填充概念,来填补缺失的值。
丢失缺少的值
如果只想排除缺少的值,则使用dropna函数和axis参数。 默认情况下,axis = 0,即在行上应用,这意味着如果行内的任何值是NA,那么整个行被排除。
替换丢失(或) ...
Python Pandas 统计聚合函数
统计方法有助于理解和分析数据的行为。现在我们将学习一些统计函数,可以将这些函数应用到_Pandas_的对象上。
pct_change()函数
系列,DatFrames和Panel都有pct_change()函数。此函数将每个元素与其前一个元素进行比较,并计算变化百分比。 默认情况下,pct_change()对列进行操作; 如果想应用到行上,那么可使用axis = 1参数。
协方差
协方差适用于系列数据。Series对象有一个方法cov用来计算序列对象之间的协方差。NA将被自动排除。
协方差(Covariance)在概率论和统计学中用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。
协方差表示的是两个变量的总体的误差,这与只表示一个变量误差的方差不同。 如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。 如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。
相关性
相关性显示了任何两个数值(系列)之间的线性关 ...
Python Pandas索引和选择数据
Python和NumPy索引运算符"[]"和属性运算符"."。 可以在广泛的用例中快速轻松地访问_Pandas_数据结构。然而,由于要访问的数据类型不是预先知道的,所以直接使用标准运算符具有一些优化限制。对于生产环境的代码,我们建议利用本章介绍的优化_Pandas_数据访问方法。 _Pandas_现在支持三种类型的多轴索引; 这三种类型在下表中提到 -
编号
索引
描述
1
.loc()
基于标签
2
.iloc()
基于整数
3
.ix()
基于标签和整数
.loc()
_Pandas_提供了各种方法来完成基于标签的索引。 切片时,也包括起始边界。整数是有效的标签,但它们是指标签而不是位置。 .loc()具有多种访问方式,如 -
单个标量标签
标签列表
切片对象
一个布尔数组
loc需要两个单/列表/范围运算符,用","分隔。第一个表示行,第二个表示列。
.iloc()
_Pandas_提供了各种方法,以获得纯整数索引。像python和numpy一样,第一个位置是基于0的索引。 各种访问方式如下 -
整数
整数列表
系 ...