数据挖掘第二章实验: 认识数据

写在前面:本文章为清华大学出版社出版的数据挖掘课本实验第二章认识数据部分,如有为了方便做实验的同学需要可自取

【例2-2】利用pandas统计中位数、均值和众数。

import pandas as pd
df = pd.DataFrame([[1, 2], [7, -4],[3, 9], [4, -4],[1,3]],
columns=['one', 'two'])
display(df)
print('中位数:\n',df.median())
print('均值:\n',df.mean(axis=1))
print('众数:\n',df.mode())

【例2-3】统计数据的分位数等统计量。

import pandas as pd
df = pd.DataFrame([[1, 2], [7, -4],[3, 9], [3, -4]],
    index=['a', 'b', 'c', 'd'],columns=['one', 'two'])
display(df)
df.describe()

【例2-4】利用matplotlib绘制箱线图。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
%notebook inline
np.random.seed(2)  #设置随机种子
df = pd.DataFrame(np.random.rand(5,4),
columns = ['A', 'B', 'C', 'D'])
#生成0-1之间的5*4维度数据并存入4列DataFrame中
plt.boxplot(df) 
plt.show()

【例2-5】python绘制散点图示例。

import matplotlib.pyplot as plt
import numpy as np
n = 50
# 随机产生50个0~2之间的x,y坐标
x = np.random.rand(n)*2
y = np.random.rand(n)*2
colors = np.random.rand(n) 
# 随机产生50个0~1之间的颜色值
area = np.pi * (10 * np.random.rand(n))**2 
# 点的半径范围:0~10
plt.scatter(x, y, s=area, c=colors, alpha=0.5, marker=(9, 3, 30))
plt.show()

【例2-6】Python绘制散点图矩阵示例。

import seaborn as sns
df_iris = sns.load_dataset('iris')
sns.set(style = "ticks")  
g = sns.pairplot(df_iris,vars = ['sepal_length', 'petal_length'])

【例2-7】Python绘制平行坐标图示例。

from pyecharts.charts import Parallel
import pyecharts.options as opts
import seaborn as sns
import numpy as np
data = sns.load_dataset('iris')
data_1 = np.array(data[['sepal_length', 'sepal_width', 'petal_length', 'petal_width']]).tolist()
parallel_axis = [
    {"dim": 0, "name": "萼片长度"},
    {"dim": 1, "name": "萼片宽度"},
    {"dim": 2, "name": "花瓣长度"},
    {"dim": 3, "name": "花瓣宽度"},
]
parallel = Parallel(init_opts=opts.InitOpts(width="600px", height="400px"))
parallel.add_schema(schema=parallel_axis)
# parallel.config(schema)
parallel.add('iris平行图',data=data_1,linestyle_opts=opts.LineStyleOpts(width=4, opacity=0.5))
parallel.render_notebook()

【例2-8】Python词云绘制示例。

from pyecharts import options as opts
from pyecharts.charts import Page, WordCloud
from pyecharts.globals import SymbolType
words = [
    ("牛肉面", 7800),("黄河", 6181),
    ("《读者》杂志", 4386), ("甜胚子", 3055),
    ("甘肃省博物馆", 2055),("莫高窟", 8067),("兰州大学", 4244),
    ("西北师范大学", 1868),("中山桥", 3484),
    ("月牙泉", 1112),("五泉山", 980),
    ("五彩丹霞", 865),("黄河母亲", 847),("崆峒山",678),
    ("羊皮筏子", 1582),("兴隆山",868),
    ("兰州交通大学", 1555),("白塔山", 2550),("五泉山", 2550)]
c = WordCloud()
c.add("", words, word_size_range=[20, 80])
c.set_global_opts(title_opts=opts.TitleOpts(title="WordCloud-基本示例"))
c.render_notebook()

【例2-9】使用regplot函数绘制回归图。

import seaborn as sns
df_iris = sns.load_dataset('iris')
df_iris.head()
# sns.barplot(x = df_iris['species'],y=df_iris['petal_length'],data=df_iris)
sns.regplot(x = 'petal_length',y = 'petal_width' ,data = df_iris)

【例2-10】设 和 为两个向量,长度都为 ,求它们之间的距离 。

1. 用Numpy实现常见的距离度量

import numpy as np
# 欧式距离(Eulidean distance)
def euclidean(x, y):
    return np.sqrt(np.sum((x-y)**2))
# 曼哈顿距离(Manhattan distance)
def manhattan(x,y):
    return np.sum(np.abs(x-y))
#切比雪夫距离(Chebyshev distance)
def chebyshev(x,y):
    return np.max(np.abs(x-y))
# 闵可夫斯基距离(Minkowski distance)
def minkowski(x,y,p):
    return np.sum(np.abs(x-y)**p)**(1/p)
# 汉明距离(Hamming distance)
def hamming(x, y):
    return np.sum(x!=y)/len(x)
# 余弦距离
def cos_similarity(x, y):
    return np.dot(x,y)/(np.linalg.norm(x)*np.linalg.norm(y))

2. 使用scipy的pdist进行数据对象的距离计算

import numpy as np
from scipy.spatial.distance import pdist
x=(0.7,0.9,0.2,0.3,0.8,0.4,0.6,0,0.5)
y=(0.6,0.8,0.5,0.4,0.3,0.5,0.7,0.2,0.6)
X=np.vstack([x,y])
d1= pdist(X, 'euclidean')
print('欧式距离:',d1)
d2=pdist(X,'cityblock')
print('曼哈顿距离:',d2)
d3=pdist(X,'chebyshev')
print('切比雪夫距离:',d3)
d4=pdist(X,'minkowski',p=2)
print('闵可夫斯基距离:',d4)
d5=pdist(X,'cosine')
print('余弦相似性:',1-d5) 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值