第3章实践SQLServer数据挖掘-PPT精选
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用命名查询
对于数据挖掘来说,有用的典型查询是过滤、连接 和采样查询
基于列的值过滤行: Select * From [Movies] Where
[Movie] !='Star Wars'
使用命名查询
从嵌套表中过滤掉不常见的项
select [CustomerID],[Movie] from [Movies]
customers.*,Education.[Education Level] from Customers Join Education on Customers.[Education Id] =Education.[Education Id]
使用命名查询
采样一个SQL Server数据库中的行 select * from customers
指定列的用法
数据挖掘向导提供了“建议”功能,在选择预测列 时将启用该功能。
数据集包含的列经常多于生成挖掘模型时要使用的 列。“建议”功能可以计算出一个数值分数(介于 0 到 1 之间),用于说明数据集中的每一列与预测 列之间的关系。
根据此分数,该功能可以建议可用作挖掘模型的输 入的列。
如果使用了“建议”功能,您就可以使用建议的列, 修改选择的列以满足需要,也可以忽略建议。
提供相关列建议
提供相关列建议
单击“建议”打开“提供相关列建议”对话框,该 对话框列出与可预测列关系最密切的列。
“提供相关列建议”对话框按照各属性与可预测属 性的相关性对其进行排序。值大于 0.05 的列将被 自动选中,以包括在模型中。
4 CASE表达式 将一个属性从一个嵌套表转换到事例表:
CASE When Exists (Select [Movie] From [Movies] Where [Movie]='Star Wars' And Movies.CustomerID=Customers.CustomerID ) then 'True' ELSE 'False'
在“指定列的内容和数据类型”页上,单击“检 测”。
某个算法将运行此示例数字数据,并确定这些数字 列是包含连续值还是包含离散值。
在 SSAS中处理挖掘模型之前,可以为作为建模依 据的挖掘结构列定义数据类型。Analysis Services 支持以下挖掘结构列数据类型:
Text、Long、Boolean、Double、Date
使用命名计算
4 CASE表达式 减少有效状态的个数 CASE [Marital Status]
When 'Married' then 'Marital Status' When 'Never Married' then 'Marital Status' ELSE 'Other' END
使用命名计算
2 从外部文件导入数据
2 从外部文件导入数据
2 从外部文件导入数据
2 从外部文件导入数据
2 从外部文件导入数据
2 从外部文件导入数据
在解决方案中新建数据源 BI
新建数据源视图
为了使下一步顺利进行, 在数据挖掘项目节点上 单击右键选择“属性” 进行设置
将部署中的目标服务器更改
where [Movie] in
对记录按照
(select distinct [Movie] Movie字段分组
from [Movies] Group by [Movie]
Having count([Movie])>20)
对分组按照组的 聚合结果作过滤
使用命名查询
从一个外表中连接信息: select
命名查询是以表的形式表示的 SQL 表达式。 在命名查询中,可以指定一个 SQL 表达式来选择
从一个或多个数据源的一个或多个表返回的行和列。 命名查询基于一个表达式,除此之外,它在行和关
系方面都与数据源视图中的其他表相似。 该表达式作为表显示在数据源视图中,其行为也与
表相同。
使用命名查询
向导中的最后一步是对挖掘结构和关联的挖掘模型 进行命名。如果选择“允许钻取”,则会在模型中 启用钻取功能。这样,您就可以浏览用于生成模型 的源数据。
3.3.4 使用数据挖掘设计器
有些操作在向导中无法实现,需要在数据挖掘设计 器中进行
设置离散化属性:若所选择的数据挖掘算法不支持 连续的属性,在数据挖掘向导中系统会自动将连续 的列内容类型改为Discretized。若要指定离散的 方法和参数,可以在挖掘结构的列列表中单击,然 后在属性窗口中设置DiscretizationMethod和 DiscretiztionBuckets属性
创建命名查询时,需要为 SQL 查询返回的此表的 列和数据指定名称,并根据需要对命名查询进行说 明。
SQL 表达式可以引用数据源视图中的其他表。 命名查询允许不修改基础数据源即可扩展数据源视
图中现有表的关系架构。
例如,可以使用一系列命名查询将一个复杂的维 度表分割为几个较小、较简单的维度表以便在数 据库维度中使用。
使用命名计算
3 组合表达式 将婚姻状况和是否有孩子的属性进行组合 [Marital Status]+' '+[Has Children] 4 CASE表达式 CASE表达式可以创建有意义的变量,可以达到如
下的目的:
改变值的标签 手动离散化列 减少有效状态的个数 将一个属性从一个嵌套表中转换为一个事例级属性
数据挖掘列可以为下列四种类型之一:键列、输入 列、可预测列或输入列和可预测列的组合。
键列包含表中每个行的唯一标识符。 某些挖掘模型(如顺序分析和聚类分析以及时序模
型)可能包含多个键列。 预测列包含要在挖掘模型中预测的信息。
指定列的用法
例如,一系列表可能包含客户 ID、人口统计信息 以及每位客户在某个特定商店消费的金额。
使用命名计算
4 CASE表达式 改变值的标签 CASE [Category]
When 1 then 'food' When 2 then 'Beverage' When 3 then 'goods' END CASE
使用命名计算
4 CASE表达式 手动离散化列: CASE
When [Age]<20 then 'Under 20' When [Age]<=30 then 'Berween 20 and 30' When [Age]<=40 then 'Between 30 and 40' ELSE 'Over 40' END
END
在Customers表上创建一个命名计算
下面创建一个命名计算离散化并减少Num Bedrooms列中的状态。
在DSV中右击Customers表,选择“新建命名计 算”
在Customers表上创建一个命名计算
在对话框中输入计算列名Bedrooms、描述和表达 式
在Customers表上创建一个命名计 算
Case WHEN [NUM BEDROOMS] =1 THEN 'ONE' WHEN [NUM BEDROOMS] <=3 THEN 'TWO OR THREE' WHEN [NUM BEDROOMS] >=4 THEN 'FOUR OR MORE' ELSE 'NONE'
END
使用命名查询
可以使用数据源视图设计器中的“创建命名查询” 对话框向数据源视图添加命名查询。
内容包括
您最喜欢的导演
您最喜欢的男演员和女演员
年龄
性别
婚姻状况 有几个小孩 您家里有多少张床
•您的房子中有多少间浴室 •您最喜欢的爱好、兴趣领域是什么
您拥有多少辆汽车 •您的学历
在ssms中创建数据库
1 在ssms中创建数据库
2 从外部文件导入数据
2 从外部文件导入数据
从DSV中将列拖到结构树种即可实现多次将同一个 列添加到模型中
创建属性层次
若两个列间存在相关关系,在DMX中可以使用结 构Related to来说明。
改为本机上的数据库 服务器的名称
创建MovieClick数据源
在SSMS中创建MovieClick数据库,导入数据表 在BI Dev Studio中创建项目MovieClick 在MovieClick项目中建立数据源 建立数据源视图:本例的要点是建立数据源中多张
表之间的嵌套关系
如果一个事例表和一个嵌套表之间的关系不存在于 关系数据库中,则必须在DSV中指定该关系,否则 将无法将嵌套表添加到模型中
客户 ID 可以唯一地标识客户,并且使事例表与嵌 套表相关,因此,一般会将客户 ID 作为键列。
可以使用从人口统计信息中选择的列作为输入列, 将说明每位客户消费金额的列作为预测列。
可以生成一个挖掘模型,该模型可将人口统计信息 与某位客户在商店中的消费金额关联起来。可以使 用此模型作为有针对性的营销的基础。
3.3.2 使用数据挖掘向导
使用数据挖掘向导与使用DMX语言创建数据挖掘 结构/模型所需要的信息是相同的:选择算法、选 择数据源并指定源表的用法、选择表中的列并制定 这些列的用法、对数据挖掘模型命名。
指定表的类型:事例表或嵌套表
指定列的用法
指定了事例表和嵌套表后,可以确定要包括在挖掘 结构中的表的每一列的使用类型。如果没有指定列 的使用类型,则挖掘结构中将不会包含该列。
大家可以尝试在SSMS的相应数据库中通过建立数 据库关系图来建立表之间的关系
MovieClick数据源视图
使用DSV来浏览数据
使用命名计算
在DSV中可以创建命名计算、命名查询和视图,这 些操作并不会影响到原数据库中的数据
在DSV中,命名计算列是表中附加的虚列,所以可 以在自己的数据中挖掘派生信息,而不需要改变源 数据
tablesample (30 precent) pepeatable(1)
基于Customers表创建命名查询
在Customers表上创建一个命名查询,该 Customers表之包含拥有房子的客户。
由于这个表包含一个命名计算,所以必须将命名计 算手动添加到查询中
首先复制Bedrooms Named Calculation中的代 码
第3章 实践SQL Server数据挖掘
创建数据挖掘项目
在SQL Server 2019的程序目录中打开 进入BI Dev Studio,在文件菜单中选择“新
建”—“项目”
注意项目文件是保存在“我的文档”文件夹中的
新建项目对话框
打开解决方案资源管理器查看
MovieClick数据集
命名计算列包含一个名称、一个包含计算的SQL表 达式和一个可选的描述
使用命名计算
1 算术操作 可以使用+,-,*,/和%(求模)。例如创建利润列 [Sales Price]-[Item Cost] 2 数学函数 例:以对数的方法来规范化一个以指数级别增长的
列 Log([Sales Quantity]) 创建一个标志,判断实际值高于还是低于季度预算 Sign([Actual Expenses]-[Budgeted Expenses])
其次在DSV中右击然后选择“新建命名查询”
3.3 创建和编辑模型
3.3.1 结构和模型 挖掘结构包含所有列的数据类型和内容类型的定义,
但没有包含列的用法定义和使用的算法 挖掘模型包括挖掘算法及其相关的参数,还有来自
挖掘结构的列 有了挖掘结构的概念,可以很容易地对同一数据集
测试不同的假定
2019年11月,对微软的雇员进行调查。 调查询问了被调查者的电影观看行为、人口统计信
爱所喜欢的电影、演员和导演。 内容包括
多久看一次电影 多久租一次影片 家里有多少台电视机 谁通常会选择您观看的电影 您最喜欢的电影
MovieClick数据集
2019年11月,对微软的雇员进行调查。
设置属性的类型和离散化参数
多次将同一列添加到挖掘结构中
一个挖掘结构中可以包含多个模型,可能要用多种 不同的方法来针对某一特殊的列创建多个模型,目 的是为了查看这一列如何影响预测的结果。
例如可能想采用下面的方式来比较Age列是如何影 响预测结果的 把Age列作为连续的值 将Age列离散化为3桶、5桶或7桶