国科大数据挖掘课程HW1

这篇具有很好参考价值的文章主要介绍了国科大数据挖掘课程HW1。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

HW1

Submission requirements:

Please submit your solutions to our class website.


Q1.Suppose that a data warehouse consists of four dimensions, date, spectator, location, and game, and two measures, count and charge, where charge is the fare that a spectator pays when watching a game on a given date. Spectators may be students, adults, or seniors, with each category having its own charge rate.

(a) Draw a star schema diagram for the data warehouse.

中科宏一数据挖掘服务,Python,数据挖掘,数据仓库,数据库

(b) Starting with the base cuboid [date, spectator, location, game],what specific OLAP operations should one perform in order to list the total charge paid by student spectators in Los Angeles?

step 1. Roll-up on date from date_key to all
step 2. Roll-up on spectator from spectator_key to status
step 3. Roll-up on location from location_key to location_name
step 4. Roll-up on game from game_key to all

step 5. Dice with "status=student" and "location_name=Los Angeles"

© Bitmap indexing is a very useful optimization technique. Please present the pros and cons of using bitmap indexing in this given data warehouse.

优点

位图索引是一种高效的索引结构,在查询、过滤等方面上,由于进行的是位运算,所以比常规的查询方式快很多。例如在本仓库中,假设对于spectator表的子列status,我们有:

spectator_key status gender
0 学生
1 成人
2 学生
3 学生
4 老人

status就可以建立以下位图索引:

status="学生" : 10110
status="成人" : 01000
status="老人" : 00001

gender可以建立以下位图索引:

gender="男": 10100
gender="女": 01011

例如,我们想要查询学生,只需要用10110去过滤原始数据就行。

我们想混合查询,比如同时查询status="学生"gender="男"的数据,只需要进行并操作就行了:

10110 & 10100 = 10100

可以大大提高计算速度。

此外,位图索引可以在一定程度上绕开原始数据,进一步提高处理速度。例如,我们想统计满足上面条件的人数,只需要:

ans=0
x=(10110&10100)
while x:
	x&=(x-1)
	ans+=1

缺点

位图索引比较适合枚举类型,也就是离散型变量,对于连续变量,位图索引并不适用,往往需要先做离散化。比如本仓库中,phone number字段可能就不太适合(也许这个字段没有存在的必要?)

而当属性列非常多时,我们做位图索引的开销也比较大。


Q2.某电子邮件数据库中存储了大量的电子邮件。请设计数据仓库的结构,以便用户从多个维度进行查询和挖掘。

中科宏一数据挖掘服务,Python,数据挖掘,数据仓库,数据库


Q3. Suppose a hospital tested the age and body fat data for 18 random selected adults with the following result:

age 23 23 27 27 39 41 47 49 50 52 54 54 56 57 58 58 60 61
%fat 9.5 26.5 7.8 17.8 31.4 25.9 27.4 27.2 31.2 34.6 42.5 28.8 33.4 30.2 34.1 32.9 41.2 35.7

(a) Calculate the mean, median, and standard deviation of age and %fat.

             age       %fat
mean   46.444444  28.783333
std    13.218624   9.254395
median      51.0       30.7

(b) Draw the boxplots for age and %fat.

中科宏一数据挖掘服务,Python,数据挖掘,数据仓库,数据库

© Draw a scatter plot based on these two variables.

中科宏一数据挖掘服务,Python,数据挖掘,数据仓库,数据库

(d) Normalize age based on min-max normalization.

x=data["age"]
y=data['%fat']
X=(x-x.min())/(x.max()-x.min())
Y=(y-y.min())/(y.max()-y.min())
print(X,Y)

Result is:

0     0.000000
1     0.000000
2     0.105263
3     0.105263
4     0.421053
5     0.473684
6     0.631579
7     0.684211
8     0.710526
9     0.763158
10    0.815789
11    0.815789
12    0.868421
13    0.894737
14    0.921053
15    0.921053
16    0.973684
17    1.000000

(e) Calculate the correlation coefficient (Pearson’s product moment coefficient). Are these two variables positively or negatively correlated?

print(np.corrcoef(x,y))
print("相关系数" ,stats.pearsonr(x,y)[0])

Result is

[[1.        0.8176188]
 [0.8176188 1.       ]]
相关系数 0.8176187964565874

I think they are positively correlated.

(f) Smooth the fat data by bin means, using a bin depth of 6.

def mean(x):
    return round(sum(x)/len(x),2)

N_y=sorted(y)
bins=[[]]
for j in N_y:
    bins[-1].append(j)
    if len((v:=bins[-1]))==6:
        v[:]=[mean(v)]*len(v)
        bins.append([])
for i,j  in enumerate(bins[:-1]):
    print("bin %d is :"%(i+1),j)
bin 1 is : [19.12, 19.12, 19.12, 19.12, 19.12, 19.12]
bin 2 is : [30.32, 30.32, 30.32, 30.32, 30.32, 30.32]
bin 3 is : [36.92, 36.92, 36.92, 36.92, 36.92, 36.92]

(g) Smooth the fat data by bin boundaries, using a bin depth of 6.

这里因为我们是对排好序的数据做处理,所以可以通过二分法进行优化,获取中间分界。文章来源地址https://www.toymoban.com/news/detail-635554.html

def close(x,a,b):
    # 是否靠近下界
    return (x-a)<=(b-x)

def boundary(x):
    Min=x[0]
    Max=x[-1]

    l,r=0,len(x)-1
    while l<=r:
        mid=(r-l)//2+l
        if close(x[mid],Min,Max):
            if not close(x[mid+1],Min,Max):
                l=mid
                break
            l=mid+1
        else:
            if close(x[mid-1],Min,Max):
                l=mid
                break
            r=mid-1
    return [[Min]*l+[Max]*(len(x)-l)]

N_y=sorted(y)
bins=[[]]
for j in N_y:
    bins[-1].append(j)
    if len((v:=bins[-1]))==6:
        v[:]=boundary(v)
        bins.append([])
for i,j  in enumerate(bins[:-1]):
    print("bin %d is :"%(i+1),j)
bin 1 is : [[7.8, 7.8, 27.2, 27.2, 27.2, 27.2]]
bin 2 is : [[27.4, 27.4, 32.9, 32.9, 32.9, 32.9]]
bin 3 is : [[33.4, 33.4, 33.4, 33.4, 42.5, 42.5]]

到了这里,关于国科大数据挖掘课程HW1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习--课后作业--hw1

    本篇文章全文参考这篇blog 网上找了很多教程,这个是相对来说清楚的,代码可能是一模一样,只是进行了一些微调,但是一定要理解这个模型具体的处理方法,这个模型我认为最巧妙的它对于数据的处理,直接把前9天所有的参数参数当作变量,最简单粗暴的方法,,然后再

    2024年02月14日
    浏览(37)
  • 【数据挖掘算法与应用】——数据挖掘导论

    数据挖掘技术背景 大数据如何改变我们的生活 1.数据爆炸但知识贫乏   人们积累的数据越来越多。但是,目前这些数据还仅仅应用在数据的录入、查询、统计等功能,无法发现数据中存在的关系和规则,无法根据现有的数据预测未来的发展趋势,导致了“数据爆炸但知识

    2023年04月09日
    浏览(60)
  • 关联规则挖掘(上):数据分析 | 数据挖掘 | 十大算法之一

    ⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者: 秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据开发、数据分析等。 🐴欢迎小伙伴们 点赞👍🏻、收藏

    2024年02月07日
    浏览(52)
  • 【数据挖掘竞赛】零基础入门数据挖掘-二手汽车价格预测

    目录 一、导入数据  二、数据查看 可视化缺失值占比  绘制所有变量的柱形图,查看数据 查看各特征与目标变量price的相关性 三、数据处理  处理异常值 查看seller,offerType的取值 查看特征 notRepairedDamage   异常值截断  填充缺失值   删除取值无变化的特征 查看目标变量p

    2023年04月27日
    浏览(58)
  • 数据挖掘-实战记录(一)糖尿病python数据挖掘及其分析

    一、准备数据 1.查看数据 二、数据探索性分析 1.数据描述型分析 2.各特征值与结果的关系 a)研究各个特征值本身类别 b)研究怀孕次数特征值与结果的关系 c)其他特征值 3.研究各特征互相的关系 三、数据预处理 1.去掉唯一属性 2.处理缺失值 a)标记缺失值 b)删除缺失值行数  c

    2024年02月11日
    浏览(50)
  • 数据挖掘(3.1)--频繁项集挖掘方法

    目录 1.Apriori算法 Apriori性质 伪代码 apriori算法 apriori-gen(Lk-1)【候选集产生】 has_infrequent_subset(c,Lx-1)【判断候选集元素】 例题 求频繁项集: 对于频繁项集L={B,C,E},可以得到哪些关联规则: 2.FP-growth算法 FP-tree构造算法【自顶向下建树】 insert_tree([plP],T) 利用FP-tree挖掘频繁项集

    2023年04月09日
    浏览(51)
  • 数据仓库与数据挖掘

    数据挖掘(Data mining),又译为资料探勘、数据采矿。它是数据库知识发现(Knowledge-Discovery in Databases,KDD)中的一个步骤。 数据挖掘一般是指从大量的数据中通过算法搜索隐藏于其中的信息的过程。 数据挖掘通常与计算机科学有关,并通过统计、在线分析处理、情报检索、

    2024年02月06日
    浏览(46)
  • 数据挖掘|序列模式挖掘及其算法的python实现

    序列(sequence)模式挖掘也称为序列分析。 序列模式发现(Sequential Patterns Discovery)是由R.Agrawal于1995年首先提出的。 序列模式寻找的是事件之间在顺序上的相关性。 例如,“凡是买了喷墨打印机的顾客中,80%的人在三个月之后又买了墨盒”,就是一个序列关联规则。对于保险

    2024年04月09日
    浏览(56)
  • 《数据挖掘基础》实验:Weka平台实现关联规则挖掘

    进一步理解关联规则算法(Apriori算法、FP-tree算法),利用weka实现数据集的挖掘处理,学会调整模型参数,读懂挖掘规则,解释规则的含义 (1)随机选取数据集为对象,完成以下内容:(用两种方法:Apriori算法、FP-tree算法) 文件导入与编辑; 参数设置说明; 结果截图;

    2024年02月02日
    浏览(56)
  • 数据挖掘与图像挖掘:计算机视觉的创新

    计算机视觉是人工智能领域的一个重要分支,它涉及到计算机对图像和视频数据进行分析和理解。数据挖掘则是数据科学领域的一个核心技术,它涉及到从大量数据中发现隐藏的模式和规律。随着数据量的增加,数据挖掘技术在计算机视觉领域得到了广泛应用,以提高计算机

    2024年04月17日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包