admin 管理员组文章数量: 1184232
2024年3月6日发(作者:八位二进制转bcd码算法)
Python中的数据挖掘和关联性分析
一、前言
数据挖掘是目前社会发展的必然产物。随着互联网时代的到来和各种新型数据领域的兴起,数据量的膨胀和迭代速度的加快让数据处理变得复杂,而数据挖掘就成了解决这一问题的有效手段。同时,关联性分析也是数据挖掘技术中的一项重要内容,它可以帮助人们发现不同变量之间的联系,为决策提供有力支持。
本文主要介绍Python中的数据挖掘和关联性分析,在介绍的过程中,我们将会分别介绍数据挖掘的步骤和关联性分析的原理,并针对实例进行演示和分析。
二、Python中的数据挖掘
1.数据挖掘步骤
数据挖掘的步骤包括:定义问题、数据采集和清理、数据处理和建模、模型评估和选择,以及模型应用。这些步骤通常会交替重复多次,以达到最佳结果。Python中的数据挖掘主要包括以下步骤:
1)定义问题:在这一步中,需要明确挖掘目的、数据来源、数据格式等。
2)数据采集和清理:采集需要的数据,并对数据进行清洗,发现并处理数据的缺失值、异常值等。
3)数据处理和建模:在这一步中,需要选择合适的数据处理方法,并基于建立合适的模型。
4)模型评估和选择:在这一步中,需要对模型结果进行评估,并选择最优模型。
5)模型应用:在这一步中,需要应用模型,获取预测结果或进行分类。
2. Python中的数据处理技术
Python中的数据处理技术主要包括数据可视化、数据统计、机器学习等多种技术。其中,数据可视化技术主要用于展示数据特征,以帮助用户理解数据结构和特性;数据统计技术能够为数据的预处理和建模提供重要支持;机器学习技术则能够进行模型的训练和预测。
3. Python中的常用数据挖掘工具
Python中常用的数据挖掘工具包括Pandas、Numpy、Scikit-learn等。其中,Pandas是Python语言中最常用的数据处理库,Numpy则是科学计算库中的重要组成部分,而Scikit-learn则是Python机器学习领域最著名的库之一。这些工具都有着丰富的功能和完善的文档支持,帮助用户在数据挖掘中能够快速学习和实践。
三、Python中的关联性分析
1.关联性分析原理
关联性分析可以发现不同变量之间的关系,是数据挖掘领域中的重要分析方法。关联性分析主要包括两种方法:Apriori算法和FP-growth算法。其中,Apriori算法是发现大规模数据集中频繁项集的常用算法,FP-growth算法则是一种更高效的关联规则挖掘算法。这两种方法的实现,操作步骤大致相同,但原理不同。
2. Python中实现关联性分析
关联性分析的实现需要借助Python中的相关库。比较常用的是Python的Machine Learning库——Scikit-learn中的
Association_Rules算法。在这里以一个购物篮分析的例子进行关联性分析的演示。
import pandas as pd
from cessing import TransactionEncoder
from nt_patterns import apriori, fpgrowth
#数据读入
dataset = _csv('Market_Basket_',
header=None)
#数据预处理
transactions = []
for i in range(0, [0]):
temp = []
for j in range(0, [1]):
if str([i,j]) != 'nan':
(str([i,j]))
(temp)
#转化成单独项集编码
te = TransactionEncoder()
te_ary = _transform(transactions)
df = ame(te_ary, columns=s_)
#Apriori算法
apriori(df, min_support=0.05, use_colnames=True)
# FP-growth算法
fpgrowth(df, min_support=0.05, use_colnames=True)
在以上代码中,TransactionEncoder是一个可以将原始数据转换成可以进行关联性分析的数据结构的库,使用map()函数或for循环都可构建出该结构,通过am形成特定格式的DataFrame。接下来,我们可以基于建立的数据结构进行Apriori算法和FP-growth算法,发现关联规则。
四、实例分析
为了帮助读者更好地理解Python中的数据挖掘和关联性分析,我们在这里以食品超市购物数据为例子进行分析。该超市有1000个顾客,他们在超市购买了不同种类的商品。数据记录了每个顾客购买商品的信息,包括商品名称和价格。
基于这些数据,我们想要运用Python进行数据挖掘和关联性分析,找到哪些商品经常被顾客购买。在这个例子中我们会使用Python中的Pandas、Numpy、Scikit-learn等库进行数据处理,并使用关联性分析来发现顾客购买的商品之间的关联性。
1.数据处理
首先,我们需要将购买数据读入,采用Pandas中的read_csv方法对原始数据进行处理,将其转化为Pandas中的DataFrame对象,并使用isnull()和dropna()方法处理空值,改变数据结构。
import pandas as pd
import numpy as np
data=_csv('', header=None)
().sum()
(inplace=True)
在读入数据后,我们可以对数据进行清理并去重。代码如下所示:
data_cleaning=ame(columns=['items'])
for iloc in range(len(data)):
set_of_items=[iloc,:].dropna().tolist()
data_cleaning=data_({'items':set(set_of_items)},ignore_index=True)
print(f"The shape of the data after cleaning:
{data_}n")
data_(10)
在清理完数据之后,我们可以构建出Pandas的DataFrame对象,其中的每行都对应于一笔购买记录,每列都代表一个商品。另外,我们会把购买记录转化为一个集合,以计算出每一个商品的出现次数。
items_set=set()
for iloc in range(len(data)):
set_of_items = [iloc,:].dropna().tolist()
items_(set_of_items)
print(f"Total unique elements/categories in our dataset:
{len(items_set)}n")
print(list(items_set)[:50])
为了更好地将数据可视化,我们可以采用WordCloud和matplotlib中的pyplot库,根据购买记录的频率生成商品名云图。
import as plt
from wordcloud import WordCloud
ts(figsize=(12,6))
ts_adjust(wspace=0.3)
t(1,2,1)
text=" ".join(data_cleaning['items'].apply(lambda x:
str(x)).tolist())
wordcloud =
WordCloud(background_color='white',colormap='plasma',
width=400, height=200).generate(text)
(wordcloud,interpolation='bilinear')
('12K Orders')
('off')
t(1,2,2)
look_for = ['coffee', 'tea', 'beer', 'soda', 'cheese',
'chicken', 'vegetables', 'fruit']
text="
".join(data_cleaning['items'][data_cleaning['items'].apply(lambda x: ection(look_for) == set())].apply(lambda x:
str(x)).tolist())
wordcloud2 =
WordCloud(background_color='white',colormap='plasma',
width=400, height=200).generate(text)
(wordcloud2,interpolation='bilinear')
(f'{len(data_cleaning)} orders: Excluding the
top 8 items')
('off')
()
在这段代码中,我们将关键词筛选限定为咖啡、茶、啤酒、苏打水、奶酪、鸡肉、蔬菜、水果等。根据结果,我们可以看到,蔬菜是顾客购物篮中出现次数最多的商品,其次是奶酪、水果。
2.关联性分析
接下来,我们将通过Python中的关联性分析方法来分析顾客购物篮中不同商品之间的关联性。
在以下代码中,我们先通过Pandas和mlxtend库中的TransactionEncoder来构建事务性数据,并通过fp-growth算法计算频繁项集。
from nt_patterns import fpgrowth
from cessing import TransactionEncoder
# Prepare Data
te = TransactionEncoder()
te_ary = (data_cleaning['items'].apply(lambda x:
list(x)).tolist()).transform(data_cleaning['items'].apply(lambda x: list(x)).tolist())
data_fp = ame(te_ary, columns=s_)
# FP-Growth
frequent_itemsets = fpgrowth(data_fp, min_support=0.01,
use_colnames=True, max_len=3)
frequent_itemsets =
frequent__values(by=['support'],ascending=False)
print(f"FPGrowth Algorithm Generated
{len(frequent_itemsets)} frequent itemsets.")
我们通过指定参数min_support以及max_len来控制关联规则的频繁度,此处设定min_support=0.05,生成了67个frequent
itemsets。
接下来,我们可以使用关联规则搜索算法来发现不同商品之间的关联关系。我们该算法是通过计算支持度和置信度得到的。置信度指的是如果已经购买了A商品,那么用户下一步有大概多少的概率会购买B商品。
from nt_patterns import association_rules
# Mine Association Rules
rules = association_rules(frequent_itemsets,
metric="lift", min_threshold=0.5)
_values(by=['support', 'lift'],
ascending=[False,False])
()
最后,我们可以通过使用matplotlib库绘制关联规则的置信度分布。
(rules['confidence'], alpha=.8, color='skyblue')
(axis='y', alpha=0.75)
('Confidence')
('Frequency')
('Association Rules Confidence Distribution')
()
我们可以看到,大部分关联规则的置信度都在90%以上。
五、结论
本文主要介绍了Python中的数据挖掘和关联性分析。数据挖掘步骤包括定义问题、数据采集和清理、数据处理和建模、模型评估和选择,以及模型应用,通过使用Pandas、Numpy、Scikit-learn等多种数据处理技术,帮助读者更好地了解数据挖掘的具体实现。关联性分析则是数据挖掘技术中不可或缺的一部分,本文对Apriori算法和FP-growth算法进行了介绍,并基于一个食品超市购物数据的实例进行了演示和分析。通过以上实例,相信读者们可以更好地理解Python中的数据挖掘和关联性分析的实际应用场景。
版权声明:本文标题:Python中的数据挖掘和关联性分析 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1709736374a544866.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论