大数据分析与应用

什么是大数据分析与应用

大数据分析与应用是指利用大规模、多样化和高速增长的数据资源,通过采用各种技术和方法对数据进行收集、存储、处理和分析,从而获取有价值的洞察和知识,并将其应用于各个领域和行业中。

大数据分析与应用的主要目标是从海量的数据中挖掘出有意义的信息,以支持决策制定、业务优化、创新发展等。通过对大数据的深入分析,可以帮助企业和组织发现潜在的商机、优化运营流程、改进产品和服务、提高效率和竞争力等。

大数据分析与应用通常涉及以下几个方面:

1. 数据收集和存储:包括采集来自各种来源(如传感器、社交媒体、日志文件等)的大规模数据,并将其存储在可扩展的数据存储系统中,如分布式文件系统(如Hadoop HDFS)或云存储服务。

2. 数据清洗和预处理:对原始数据进行清洗、去重、过滤、转换等操作,以确保数据的质量和一致性,并为后续分析做好准备。

3. 数据分析和建模:应用统计学、机器学习、数据挖掘等技术和方法,对数据进行探索性分析、模式识别、关联规则挖掘、预测建模等,以从数据中提取有价值的信息和知识。

4. 数据可视化与交互:通过可视化工具和技术,将分析结果以图表、图形、仪表盘等形式展示出来,使用户能够更直观地理解和利用分析结果。

5. 应用与决策支持:将分析结果应用于实际业务场景中,为决策制定、业务优化、产品创新等提供支持和指导。

大数据分析与应用已经广泛应用于各个领域和行业,包括金融、零售、制造、医疗、交通、能源等。它为组织和企业带来了许多机遇和挑战,可以帮助他们更好地了解客户需求、优化运营效率、创新产品和服务,并在竞争激烈的市场中取得竞争优势。

大数据分析平台

基于Hadoop的大数据分析平台



大数据平台是对海量结构化、非结构化、半机构化数据进行采集、存储、计算、统计、分析处理的一系列技术平台。大数据平台处理的数据量通常是TB级,甚至是PB或EB级的数据,其涉及的技术主要有分布式计算、高并发处理、高可用处理、集群管理、实时计算等。
1.Hadoop作为一个开发和运行处理大规模数据的软件平台,实现了在大量的廉价计算机组成的集群中对海量数据进行分布式计算;
2.Hadoop框架中最核心的设计是HDFS和MapReduce;
3.HDFS是一个高度容错性的系统,MapReduce是一套可以从海量的数据中提取数据最后返回结果集的编程模型;
4.Hadoop家族还包含各种开源组件,比如Yarn, Zookeeper, Hbase, Hive, Sqoop, Impala, Spark等;

大数据计算服务-MaxCompute


大数据计算服务MaxCompute,由阿里云自主研发,提供针对TB/PB级数据、实时性要求不高的分布式处理能力,应用于数据分析、挖掘、商业智能等领域。阿里巴巴的数据业务都运行在MaxCompute。
MaxCompute是一种快速、完全托管的EB级数据仓库解决方案。

数据挖掘概念及流程

数据挖掘是指从大量的数据中发现隐藏在其中的模式、关联和知识的过程。它结合了统计学、机器学习、数据库技术和可视化等多个领域的方法和技术,用于发现和提取有价值的信息,并支持决策制定和业务优化。

数据挖掘的一般流程包括以下几个主要步骤:

1. 问题定义:明确分析的目标和问题,确定需要解决的具体任务。例如,预测销售量、分类用户行为、识别异常等。

2. 数据收集与理解:收集相关的数据,并对数据进行初步的探索性分析。了解数据的特征、结构、质量以及可能存在的缺失值或异常值。

3. 数据清洗与预处理:对数据进行清洗、转换和集成,以确保数据的质量和一致性。去除重复值、处理缺失值、处理异常值等。

4. 特征选择与变换:从原始数据中选择最具代表性和重要性的特征,或者通过变换将数据转换为更有意义的形式。这有助于减少维度、降低计算复杂度和提高模型的效果。

5. 模型选择与建立:根据问题的特点和要求,选择适合的数据挖掘模型和算法。常用的模型包括决策树、支持向量机、聚类分析、关联规则挖掘等。

6. 模型评估与优化:通过评估指标和技术手段,对构建的模型进行评估和优化。例如,交叉验证、混淆矩阵、ROC曲线等。

7. 结果解释与应用:对模型的结果进行解释和理解,将其应用于实际问题中,支持决策制定、业务优化或其他相关应用。

8. 模型部署与监控:将构建好的模型部署到实际环境中,并进行持续的监控和更新。确保模型的性能和效果在实际应用中仍然有效。

需要注意的是,数据挖掘的流程可能因具体任务和需求而有所不同。在实际应用中,可能需要反复迭代上述步骤,以不断优化和改进模型的效果和性能。

数据预处理与特征工程

数据预处理和特征工程是数据挖掘中非常重要的步骤,它们对于构建准确、可靠的模型至关重要。下面分别介绍数据预处理和特征工程的概念和常见的技术方法。

数据预处理(Data Preprocessing):

数据预处理是指在进行数据挖掘之前,对原始数据进行清洗、转换和集成的过程。它的目标是提高数据质量、减少噪音和异常值的影响,并为后续的分析和建模做好准备。

常见的数据预处理技术包括:

1. 数据清洗:去除重复值、处理缺失值、处理异常值等。这些问题可能会影响模型的准确性和稳定性,因此需要进行适当的处理。

2. 数据转换:对数据进行规范化、归一化或标准化,以便不同尺度的数据能够进行比较和计算。常用的方法包括最小-最大缩放、Z-score标准化等。

3. 数据集成:将来自不同数据源的数据进行整合和合并,以便进行更全面的分析。这可能涉及到数据匹配、数据合并、数据转换等操作。

4. 数据降维:对高维数据进行降维,以减少特征数量和计算复杂度。常用的方法包括主成分分析(PCA)、线性判别分析(LDA)等。

特征工程(Feature Engineering):

特征工程是指根据领域知识和经验,对原始数据进行转换、选择和创造,以提取出更有意义和有用的特征。好的特征能够提高模型的性能和泛化能力,从而更好地捕捉数据中的模式和关系。

lir

常见的特征工程技术包括:

1. 特征选择:从原始特征中选择最具代表性和重要性的特征。可以基于统计分析、相关性分析、信息增益等方法进行选择。

2. 特征变换:对特征进行转换,使其更符合模型的假设和要求。例如,对数变换、指数变换、多项式变换等。

3. 特征创造:基于已有的特征,通过组合、衍生或交互等方式创造新的特征。例如,加减乘除特征、时间序列特征提取等。

4. 文本特征处理:对文本数据进行特殊的处理,如词袋模型、TF-IDF表示、词嵌入等,以便将文本数据转换为可用于建模的数值特征。

数据预处理和特征工程是数据挖掘中非常重要的步骤,能够显著影响模型的性能和结果。它们需要根据具体问题和数据的特点进行选择和应用。

例如:数据抽样的Python实例


#引入pandas库
import pandas as pd
#加载数据,并保在到data变量中
data pd.read_csv(C:/Users/Administrator/Desktop/ods_sample_storage_info.csv)
#查看data的前5条数据具体内容,使用head函数
data. head()
#查看数据的形状
data.info()
#随机抽取3%比例样本,使用sample函数,保存到samples变量中
samples = data.sample(frac=0.03)
#查委样本的头5行
samples.head()
#查看样本的信息
samples.info()

关联规则

关联规则(Association Rules)是数据挖掘中用于发现数据集中项之间的关联关系的一种技术。它可以揭示数据中的潜在模式和规律,帮助人们理解和预测数据中的行为和关联。

关联规则分析通常用于购物篮分析、市场篮子分析、交叉销售分析等领域。经典的关联规则问题通常涉及到购物篮数据,如超市的顾客购买清单。关联规则可以告诉我们哪些商品常常同时被购买,从而帮助超市进行商品定位、促销活动等决策。

关联规则由两部分组成:前项(Antecedent)和后项(Consequent)。前项和后项是项集(Itemset)的组合,项集指的是数据集中的一个或多个项的集合。

关联规则的形式可以表示为:前项 => 后项(支持度,置信度)

- 支持度(Support):指包含前项和后项的事务的比例。支持度反映了关联规则在整个数据集中的普遍程度。
- 置信度(Confidence):指在前项出现的情况下,后项也同时出现的概率。置信度反映了关联规则的可靠性和关联程度。

关联规则的发现过程通常包括以下几个步骤:

1. 生成候选项集:根据最小支持度阈值,从数据集中生成初始的候选项集。候选项集是包含一个或多个项的集合。

2. 计算支持度:计算每个候选项集的支持度,即它在数据集中出现的频率。

3. 构建频繁项集:根据最小支持度阈值,选择支持度高于阈值的项集作为频繁项集。频繁项集是经常出现在数据集中的项集。

4. 生成关联规则:对于每个频繁项集,生成所有可能的关联规则,并计算它们的置信度。

5. 过滤关联规则:根据最小置信度阈值,过滤掉置信度低于阈值的关联规则。

6. 解释和评估关联规则:解释和理解生成的关联规则,并进行评估和验证。

常用的关联规则算法包括Apriori算法、FP-Growth算法等。

关联规则分析在市场营销、推荐系统、销售预测、用户行为分析等领域具有广泛应用。

使用apriori算法分析给定数据集的关联关系,例如:

#导入需要的工具包和库
import pandas as pd
from mlxtend.frequent patternsimport apriori
from mlxtend.frequent_patterns import association_rules

#并导入数据,并将数据保存在data变量中
data =pd.read_csv('M2_IFI_Data_Basket.csv')

#查署数据航五条
data.head()

#查看数据情况
data.info()

#并处理数据象,首先删除不需要的隔性值,并将最后结果保存下来
data = data.drop(columns=['Card mum.,'Anount','Payment','Gender','Tenant',' Income','Age'])
data

#接着处理数据案,需要把yes和No的数据,转化为独热编码能识别的0、1或者True/False
data.replace(['Yes','No'], [1,0], inplace = True)
data

#调用apriori函数执行关联分析,分析结巢保存在Result变量中
Result = apriori(data,min_support=0.1,use_colnanes=True,max_len= Hone).sort_values('support',ascending=False)
Result

#对apriori算法的执行结果进行关联规则分析,将结果保存在Ass Rul变量中
Ass_Rul = association rules(Result,metric='confidence',min_threshold=0.8)
Ass_Rul

分类分析

分类分析(Classification Analysis)是数据挖掘中的一种常见技术,用于预测和分类未知数据的类别或标签。它通过学习已知类别的训练样本,构建一个分类模型,然后将该模型应用于新的未知数据,以预测其所属的类别。

分类分析通常用于解决分类问题,其中目标是根据一组特征来预测或识别数据的类别。例如,根据顾客的购买行为、年龄、性别等特征,预测他们是否会购买某种产品;根据一段文本的特征,将其分类为不同的主题或情感等。

分类分析的基本步骤如下:

1. 数据准备:收集并准备包含已知类别的训练数据集。确保数据的质量和一致性,处理缺失值和异常值。

2. 特征选择与提取:从原始数据中选择合适的特征,并进行特征转换或提取。这有助于减少维度、降低计算复杂度和提高模型的效果。

3. 模型选择与建立:选择适合问题和数据的分类模型,并进行模型训练。常用的分类模型包括决策树、支持向量机、逻辑回归、朴素贝叶斯、神经网络等。

4. 模型评估与优化:使用评估指标(如准确率、召回率、F1值)对模型进行评估,并进行优化。常用的优化方法包括调整模型参数、交叉验证等。

5. 模型应用与预测:将训练好的分类模型应用于新的未知数据,预测其所属的类别。可以使用模型的预测结果进行决策制定、行为预测等。

分类分析在许多领域中都有广泛的应用,如金融风险评估、医学诊断、垃圾邮件过滤、文本分类、图像识别等。

需要注意的是,分类分析的性能和效果受到数据质量、特征选择、模型选择和优化等因素的影响。因此,在实际应用中需要不断调整和改进模型,以获得更准确和可靠的分类结果。

逻辑回归

逻辑回归(Logistic Regression)是一种常见的分类算法,用于预测二元分类问题或多类别分类问题。尽管名字中带有"回归",但逻辑回归实际上是一种分类算法。

逻辑回归的目标是根据一组特征来预测一个样本属于某个类别的概率。它基于线性回归模型,通过将线性函数的输出映射到[0, 1]的范围内,并使用一个逻辑函数(如Sigmoid函数)进行转换,从而得到样本属于某个类别的概率。

逻辑回归的基本原理如下:

1. 假设线性关系:假设输入特征与输出类别之间存在线性关系,即可以用一个线性函数来描述。这个线性函数可以表示为:z = w^T * x + b,其中w是权重向量,x是输入特征向量,b是偏置项。

2. 逻辑函数转换:将线性函数的输出通过逻辑函数(如Sigmoid函数)进行转换,将其映射到[0, 1]的范围内。逻辑函数的定义为:f(z) = 1 / (1 + exp(-z))。

3. 概率预测:将逻辑函数的输出解释为样本属于某个类别的概率。通常,如果概率大于等于一个阈值(如0.5),则将样本预测为正类;否则,将样本预测为负类。

4. 模型训练:通过最大似然估计或梯度下降等优化算法,调整模型的权重和偏置项,使得模型的预测结果与实际类别尽可能地一致。

逻辑回归有一些特点和优势:

- 简单且易于理解和实现。
- 可以处理线性可分和线性不可分的问题。
- 输出结果是概率形式,可以提供对类别的置信度估计。
- 可以进行特征选择和模型解释,了解特征对分类结果的影响。

需要注意的是,逻辑回归假设特征之间是线性相关的,对于非线性问题,可能需要进行特征转换或使用其他更复杂的分类算法。

例如:


#引入需要的工具包和模块
import numpy as np
import pandas as pd
from sklearn.model_selection import train test_split
from sklearn.linear model import LogisticRegression
from sklearn.metrics import classification_report

#读取数据,保存在dataset变量中
dataset=pd.read_csv('C:/Users/Administrator/Desktop/ods_breakfast_info.csv',encoding='gb2312')

#查看数据头5行
dataset.head()

#查看数据各属性的统计信息
dataset.describe()

#查看数据结构的信息
dataset.info()

#查者早餐类别中各类别的计数分别是多少
dataset['breaktast'].value_counts()

#将数据分割为x和y
x = dataset[[’age’,’gender’,'occupation ital_status']].values
y = dataset[' breakfast’].values

#设置随机影种子
np.randon.seed = 123

#设置随机数种子
np.random.seed = 123

#折分数据乘,外为测试集和训练集
(train_x, test_x,train_y,test_y)=train_test_split(x,y,train_size=0.8,test_size=0.2)

#构建逻辑回归的分类器
model =LogisticRegression(multi_class='multinomial', solver='newton-cg')
 
#将训练的x和y放到模型中进行模型训练
model.fit(train_x,train_y)


#将测试集放到已经训练好的模型中,查看模型得分并打印出来
print(’模型得分:’,model.score(test_x,test_y))


#查看模型的分类报告
print(classification_report(test_y,model.predict(test_x)))


#利用训练好的模型,对新的样本数据进行分类预测,并输出结果
print(model.predict([[4,0,1,1],[3,0,2,1]]))


print(’概率’,model.predict_proba([[4,0,1,1]]).max( )


决策树

决策树(Decision Tree)是一种常见的分类和回归算法,用于从一组特征中构建一个树形模型,以预测目标变量的值。决策树通过一系列的分裂节点来表示特征的选择和决策过程,从而将数据集划分为不同的类别或值。

决策树的基本原理如下:

1. 特征选择:根据某种度量标准(如信息增益、基尼指数等),选择最佳的特征作为当前节点的分裂条件。

2. 分裂节点:将数据集根据选定的特征分裂成不同的子集。每个子集对应于一个分支,分支的数量取决于特征的取值个数。

3. 递归构建:对每个子集,重复步骤1和步骤2,直到满足终止条件。终止条件可以是达到最大深度、节点中的样本数小于阈值等。

4. 树的修剪:由于决策树容易过拟合,可以通过剪枝操作来减少过拟合风险。剪枝可以通过交叉验证、预剪枝和后剪枝等方法来实现。

决策树的优点包括:

- 直观易懂:决策树的结果可以直观地呈现为一系列的判断条件,易于理解和解释。

- 可处理多类别问题:决策树可以直接处理多类别分类问题,不需要进行额外的转换。

- 可处理数值和类别特征:决策树可以同时处理数值和类别特征,并且不需要对特征进行归一化或标准化。

然而,决策树也有一些限制和注意事项:

- 容易过拟合:决策树容易在训练数据上过拟合,特别是当树的深度较大时。可以剪枝等方法来缓解过拟合问题。

- 对噪声敏感:决策树对输入数据中的噪声和不相关特征比较敏感。

- 局部最优问题:决策树的构建过程是一种贪心算法,可能导致局部最优的分裂决策。

决策树在许多领域中都有广泛的应用,如医学诊断、金融风险评估、客户分类等。在实际应用中,可以使用不同的决策树算法(如ID3、C4.5、CART等)和技术(如随机森林、梯度提升树等)来改进和扩展决策树模型。

例如:

#导入会用到的工具库和功能模块等
import numpy as np
import pandas as pd
from sklearn import preprocessing
from sklearn.model_selection importtrain_test_split
from sklearn import tree
from sklearn.metricsimport classification_report

#读取数据,保存在dataset变量中
dataset=pd.read_csv(C:/Users/Administrator/Desktop/ods_bye_car_info1.csv",encoding='gb2312)

#查看数据头5行
dataset.head()

#查看数据的结构信息
dataset.info()

#查看买车与否属性中各类别的计数情况
dataset['buy_car_sign'].value_counts()

#从样本数据中,提取x和y
X= dataset[['age','gender','annual_income','marital status']].values
y = dataset['buy_car_sign'].values

#设置随机数种子
np.random.seed = 123

#将样本数据拆分为训练集和测试统
(train_xtest_x,train_y,test_y)=train_test_split(xy,train_size=0.8,test_size=0.2)

#构造决策数据模型
model = tree.DecisionTreeClassifier(criterion='gini',max_depth=Wone)

#把准备好的训练统祥本数据,输入到模型中进行决策树训练
model.fit(train_x,train_y)

#使用准备好的测试集对模型进行测试,并查看模型评分
print(’模型得分:',model.score(test_x,test_y))

#查看模型的分类报告
print(classification_report(test_y,model.predict(test_x))) 

#利用模型对新数据进行预测
print(model.predict([[1, 0, 2, 1], [0, 1,0,0]]))

#可以查看新数据的预测结果概率
print(’概率’,model.predict_proba([[1,0,2,1]]).max)

K近邻

K近邻(K-Nearest Neighbors,简称KNN)是一种常见的分类和回归算法,用于根据邻居的类别或值来预测新样本的类别或值。KNN的基本原理是通过计算新样本与训练集中各个样本之间的距离,选取距离最近的K个样本,然后根据这K个样本的类别(对于分类问题)或值(对于回归问题)来进行预测。

KNN的基本步骤如下:

1. 计算距离:对于给定的新样本,计算它与训练集中每个样本之间的距离。常见的距离度量包括欧氏距离、曼哈顿距离、闵可夫斯基距离等。

2. 选择邻居:根据距离的大小,选取距离新样本最近的K个训练样本作为邻居。K是一个预先设定的超参数,通常通过交叉验证等方法来确定。

3. 进行预测:对于分类问题,通过投票或多数表决的方式来确定新样本的类别。即,将K个邻居中出现次数最多的类别作为新样本的预测类别。对于回归问题,可以计算K个邻居的平均值或加权平均值作为新样本的预测值。

KNN的特点和注意事项包括:

- 简单而直观:KNN是一种基于实例的学习方法,不需要显式地训练模型,因此容易理解和实现。

- 非参数化:KNN不对数据的分布做出假设,可以适用于各种类型的数据。

- 对异常值敏感:KNN的预测结果受到邻居样本的影响,如果存在异常值,可能会对结果产生较大影响。

- 高计算复杂度:KNN需要计算新样本与训练集中所有样本之间的距离,因此在处理大规模数据集时,计算复杂度较高。

- 需要选择合适的K值:选择合适的K值对KNN的性能影响较大,一般需要通过交叉验证等方法来确定最优的K值。

KNN在许多领域中都有广泛的应用,如推荐系统、图像识别、文本分类等。在实际应用中,可以通过特征选择、特征缩放和距离权重等技术来改进和扩展KNN模型。

例如:


#引入需要用到的工具包和相关库
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metricsimport classification_report

#读取样本数据,并保存在dataset变量中
dataset=pd.read_csv('C:/Users/Administrator/Desktop/ods_bacteria_deterioration_info.csv',encoding='gb2312')

#查看数据的头5行
dataset.head()

#查看数据的基本描述统计信息
dataset.describe()

#查看数据的基本结构信息
dataset.info()

#查看踽齿项中各类别的计数情况
dataset['dental_caries_sign'].value_counts

#从数据集中切分出输入x和输出y
x=dataset[['age','gender’,'height','weight'gimblood_type','vision',’breast_feeding'J].values
y = dataset['dental_caries_sign'].values

#设置随机数种子
np. random.seed = 123

#切分数据集为训练集和测试集, 比例分别是0.8和0.2
(train_x,test_x, train_y,test_y)=train_test_split(x,y,train_size=0.8,test_size=0.2)

#构建K近邻分类分析模型,设定近邻数K取值为5
model =KNeighborsClassifier(n_neighbors=5)

#把样本数据放入模型中进行模型训练
model.fit(train_x,train_y)

#查看模型得分
print(模型得分:’,model.score(test_x,test_y))

#查看模型的分类报告(混淆矩阵)
print(classification_report(test_y,model.predict(test_x)))

#对新数据进行分类预测
#引入新数据,保存dataset_predict变量中
dataset_predict =pd.read_csv('C:/Users/Administrator/Desktop/ods_kindergarten_student_lose_info.csv',encoding='gb2312')

#查看新数据的情况
dataset_predict.head0

#使用训练好的模型对新数据进行分类预测, 并将结果保存在dataset predict的新列中
dataset_predict['dental_caries_sign_pre']-model.predict(
dataset_predict[l'age’, gender’,'height’ weight’,’blood_type’,’vision’,’breast_feeding']])

随机森林

随机森林(Random Forest)是一种集成学习方法,通过组合多个决策树来进行分类和回归。随机森林的基本原理是通过构建多棵决策树,并通过投票或平均等方式来汇总每棵树的预测结果,从而得到最终的预测结果。

随机森林的基本步骤如下:

1. 数据采样:对于给定的训练数据集,通过自助采样(bootstrap sampling)的方式,随机选择部分样本用于每棵决策树的训练。这意味着每个决策树的训练集是从原始训练集中有放回地抽取的。

2. 特征选择:对于每棵决策树的训练,随机从所有特征中选择一部分特征用于训练。这样做的目的是降低特征间的相关性,增加模型的多样性。

3. 构建决策树:对于每个子训练集和选定的特征集,构建一棵决策树。通常使用基于信息增益、基尼指数等准则的决策树算法(如CART算法)。

4. 预测汇总:对于分类问题,通过投票的方式来决定最终的预测类别。对于回归问题,通过平均或加权平均等方式来汇总每棵树的预测值。

随机森林的特点和优势包括:

- 高准确性:随机森林能够通过组合多棵决策树来降低过拟合风险,提高模型的准确性。

- 可处理高维数据:随机森林对高维数据具有较好的鲁棒性,不需要进行特征选择或降维。

- 可处理缺失值和异常值:随机森林对于缺失值和异常值的处理相对较好,不需要进行额外的数据处理。

- 可估计特征重要性:随机森林可以通过测量特征在决策树中的分裂贡献度来评估特征的重要性。

- 并行化处理:由于每棵决策树之间是相互独立的,随机森林可以并行化处理,加速训练和预测过程。

需要注意的是,随机森林模型可能存在一些限制,如模型解释性较差、训练时间较长等。此外,调整模型的超参数(如决策树数量、最大深度等)也是使用随机森林时需要注意的事项。

随机森林在许多领域中都有广泛的应用,如金融风险评估、医学诊断、文本分类等。它是一种强大而灵活的机器学习方法,可以用于解决各种分类和回归问题。

例如:


#引入需要用到的工具包和模块
import numpy as np
impart pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble inport RandomForestClassifier
from sklearn.metricsimport classification_report

#读取数描,并保存左dataset变量中
dataset=pd.read_esv('C:/Users/Administrator/Desktop/ods_bye_car_info1.csv',encoding='gb2312')

#查看数据的头5行
dataset.head()

#查看数据的基本结构信息
dataset.info()

#查看是否买车项中的各类别计数
dataset[ buy_car_sign ].value_counts()

#从数据集中切分出输入x和输出y
x= dataset[['age',' gender','annual_income','marital_status']].values
y= dataset['buy_car_sign'].values

#设置随机数种子
np.random.seed = 123

#切分数据集为训练集和测试集
(train_x,test_x, train_y,test_y)=train_test_split(x,y,train_size=0.8,test_size=0.2)

#构造模型,设置參数:决策树的数量是10,使用gini指數算法,不限制树深度
model =RandomForestClassifier(n_estimators=10,criterion='gini', max_depth=None)

#把样本数据放入模型中进行模型训练
model. fit(train_x,train_y)

#查看模型得分
print('模型得分:’,model.score(test_x,testy))

#查看模型的分类报告(混淆矩阵)
print(classification_report(test_y, model.predict(test_x)))

#使用模型对新数据进行预测
print('概率: ,model.predict_proba([[2, 0, 1,1], [2, 1,2,1]]))

#可以查看对新数据的预测概率
print(’概率: ,model.predict_proba([[2,0,1,1]]).max())

朴素贝叶斯

朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理和特征条件独立性假设的分类算法。它假设每个特征在给定类别下都是独立的,即特征之间不存在相关性。尽管这个假设在实际应用中很少成立,但朴素贝叶斯仍然是一种简单而有效的分类方法。

朴素贝叶斯的基本原理如下:

1. 学习阶段:根据给定的训练数据集,计算每个类别的先验概率和每个特征在各个类别下的条件概率。先验概率指的是在没有任何其他信息的情况下,某个样本属于某个类别的概率。条件概率指的是在已知类别的情况下,某个特征取某个值的概率。

2. 预测阶段:对于给定的新样本,计算它属于每个类别的后验概率,然后选择具有最高后验概率的类别作为预测结果。后验概率指的是在已知样本的情况下,某个类别发生的概率,根据贝叶斯定理计算得到。

朴素贝叶斯的特点和优势包括:

- 简单而快速:朴素贝叶斯算法具有简单和高效的特点,适用于大规模数据集。

- 对小样本数据效果好:朴素贝叶斯算法对于小样本数据也能产生较好的结果。

- 可处理多类别问题:朴素贝叶斯算法可以直接应用于多类别分类问题,不需要进行额外的转换。

- 对噪声和缺失数据鲁棒性强:朴素贝叶斯算法对于噪声和缺失数据具有一定的鲁棒性。

然而,朴素贝叶斯算法也有一些限制和注意事项:

- 特征独立性假设:朴素贝叶斯算法假设每个特征在给定类别下是独立的,这个假设在实际情况中很少成立。如果特征之间存在相关性,则朴素贝叶斯的性能可能会受到影响。

- 对输入数据分布敏感:朴素贝叶斯算法对输入数据的分布做出了假设,如果数据的实际分布与朴素贝叶斯的假设不符,则可能导致性能下降。

- 零概率问题:如果在训练数据中没有出现某个特征值和类别的组合,朴素贝叶斯算法会给出零概率的预测结果。为了解决这个问题,可以使用平滑技术(如拉普拉斯平滑)来处理。

朴素贝叶斯算法在文本分类、垃圾邮件过滤、情感分析等领域中有广泛的应用。它是一种简单且可靠的分类算法,在许多实际问题中都能取得不错的效果。

例如:

#引入筛聽用到的模块和工具库
ianow nuhtry np
pox Dandasag pd
imDor preprocessing
fxom learn.nodel_selection import train_test_split
from arn.naiy import GaussianNB
fromlexn.nais innertBernoulliNR
fronklearn.naiw MultinonialME
from rt classification repart

#保存在dataset变量中
dataset = pd.read csv('C:/Users/Administrator/Desktop/ods_bye_car_investigation_info-1.csv',encoding='gb2312')

#查看数据头5行
dataset. head ()

#查看数据的结构信息
dataset.info()

#查看买车项中各类别的计数
dataset['buy_car_sign'].value_counts()

#从祥本数冠中切分出输入特征,和输出标答
dataset[[’age’,gender ’narital_status',’is_local'J].values
y= dataset[’buy_car_sign'].values

#设置腿机种子
np.randon.seed = 123

#将料本数据拆分为测试统和训练禁
(train_x,test_z,train_y,test_y) =train_test_split(x,y,train_sizo=0.8,test_size=0.2)

#构建扑疏贝叶斯楼型,從用离斯模尘
model = GaussianNB()

#使用真练统的x和y,对根里进行训练
model.fit(train x,train y)

#使用测试施微路,对楼出进行评分
print('模型评分: ,nodel.score(test z,test y))


#使用测试数据,形成模型的分类报告《混浦矩阵)
print(classification_report(test_y,nodel.predict(test_x)))

#使用摄型对系数将的分要进行预别
orint(’模型预测”,nodel.predict([[1,1,1,1,]]))

print(’概率’,nodel.predict_proba([[1,1,1,1,1]】).max())


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值