主题模型
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.decomposition import LatentDirichletAllocation
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# LDA主题建模
vectorizer = CountVectorizer(max_features=1000, max_df=0.95, min_df=2)
X = vectorizer.fit_transform(result['title'])
lda_model = LatentDirichletAllocation(n_components=5, random_state=42)
lda_model.fit(X)
# 分析主题的频率和分布
feature_names = vectorizer.get_feature_names_out()
topic_keywords = []
# 辅助函数:获取主题的关键词
def get_topic_keywords(topic_weights):
top_keywords_indices = topic_weights.argsort()[:-6:-1]
return [feature_names[i] for i in top_keywords_indices]
# 使用map()函数获取每个主题的关键词列表
topic_keywords = list(map(get_topic_keywords, lda_model.components_))
# 设置中文字体
plt.rcParams['font.family'] = 'SimHei'
# 绘制词频分布图
fig, axes = plt.subplots(5, 1, figsize=(8, 12), sharex=True)
for i, ax in enumerate(axes):
topic_weights = lda_model.components_[i]
top_topic_words = topic_keywords[i]
top_topic_weights = sorted(topic_weights)[-5:]
ax.barh(top_topic_words, top_topic_weights)
ax.set_title(f'主题 {i+1}')
ax.invert_yaxis()
ax.tick_params(axis='both', which='major', labelsize=8)
plt.tight_layout()
plt.show()
因子分析
因子分析是指从研究指标相关矩阵内部的依赖关系出发,把一些信息重叠、具有错综复杂关系的变量归结为少数几个不相关的综合因子的一种多元统计分析方法。因子分析将计算每个变量在潜在因子上的荷载,通过因子荷载,可以评估每个变量对于预测相关性的重要性。
# 加载所需模块
from factor_analyzer import FactorAnalyzer
# 进行因子分析
factor_analyzer = FactorAnalyzer(1,rotation=None)
factor_analyzer.fit(data_std)
# 打印因子分析结果
facter = factor_analyzer.loadings_.flatten()
#输出因子
factor_analyzer.transform(iris)
关联规则分析
频繁项集分析:
Apriori算法是一种用于挖掘关联规则的经典算法。该算法的主要目标是发现数据集中项之间的关联关系,即在一组数据中频繁出现的项集。该算法输出的结果含义如下:
1、antecedents:关联规则的前项(antecedent)部分,即规则左侧的项集。
2、consequents:关联规则的后项(consequent)部分,即规则右侧的项集。
3、antecedent support:前项的支持度,即数据中包含前项的比例。
4、consequent support:后项的支持度,即数据中包含后项的比例。
5、support:规则的支持度,即数据中包含前项和后项的比例。
6、confidence:置信度,表示规则的可靠性,即在前提条件下出现结论的概率。
7、lift:提升度,表示规则中的前项和后项之间的独立性。如果 lift 大于 1,表示两者之间存在正相关关系;如果 lift 小于 1,表示两者之间存在负相关关系。
8、leverage:杠杆率,表示规则的实际支持度与独立性的期望支持度之间的差异。
9、conviction:说服力,表示规则的结论不依赖于前提的程度。值越大,说明规则的结论越独立于前提。
10、zhangs_metric:Zhang’s metric,一种用于度量关联规则强度的指标,结合了支持度和置信度。
这些指标一起提供了关于关联规则质量和关系强度的信息。在解释这些指标时,通常会关注置信度、lift 和支持度等,以确定规则的实用性和关联关系的强度。
- 将数据转换成适合Apriori算法的格式:
# 导入必要的模块
from mlxtend.preprocessing import TransactionEncoder
# 只保留关心的列
data_csv = data_csv[['城市类型', '是否新房CPT城市', '是否重点9城', '是否是直营城市', '增减投城市']]
# 数据预处理,将数据转换成适合Apriori算法的格式
te = TransactionEncoder()
data=data_csv.apply(lambda x: x.astype(str)).values
te_ary = te.fit(data).transform(data)
transformed_df = pd.DataFrame(te_ary, columns=te.columns_)
transformed_df
- 计算
城市类型
、是否新房CPT城市
、是否重点9城
、是否是直营城市
和增减投城市
列之间的关联规则。
# 导入必要的模块
from mlxtend.frequent_patterns import apriori, association_rules
# 使用Apriori算法找出频繁项集
frequent_itemsets = apriori(transformed_df, min_support=0.1, use_colnames=True)
# 根据频繁项集生成关联规则
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.6)
rules
轮廓系数,它用于评估聚类结果的质量,综合了样本与同簇内其他样本的相似度和样本与不同簇内样本的差异度。轮廓系数越接近1表示聚类效果越好。
平稳性检测
from statsmodels.tsa.stattools import adfuller
bagging和boosting的比较
boosting:因为是串行训练,相对效率低;因为是’提升‘,所以可以减小模型的偏差,提高准确率,但对噪声和异常值敏感,容易过拟合;适合相对复杂的过程
bagging:因为是并行训练,相对效率高;因为两处(样本扰动、属性扰动)随机(随机森林:数据随机选取,特征随机选取;传统的bagging只是样本随机)可以减小过拟合和预测方差(过拟合时,模型在测试集上方差偏大)
注:与随机森林不同,在标准的 Bagging 方法中,每个基学习器通常会使用所有的特征进行训练,而不会在每个决策点或节点上进行随机特征选择。
集成模式学习核心在于构建多个“好而不同”的基模型:好:通过模型评估直接搞定,;“不同”:通过增加 ‘扰动’ 来增加基模型的多样性:样本扰动、属性扰动、输出表示扰动、算法参数扰动
原型聚类算法的比较
学习向量量化(LVQ):
- 有监督分类算法
- 关注能代表每个类别的原型向量
- 通过训练有标签的数据最终来预测和分类、训练过程中对比类别是否一致,并调整原型向量
Kmeans:
- 无监督聚类算法
- 关注数据点相似性,找到数据集中的模式、组、自然聚类,最后输出质心(类似原型向量)、标签
- 通过不断计算样本点与质心的距离来更新质心坐标
高斯混合聚类:
- 无监督聚类算法,一种概率模型
- 样本数据服从某种由多个正太分布混合而成的一种连续概率密度函数,每一个正太分布代表一个类
- 输出的是每个样本数据多大概率属于某一分布
密度聚类(DBSCAN):
- 基于密度的聚类