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中的数据挖掘和关联性分析的实际应用场景。


本文标签: 数据 分析 进行