首页
关于
推荐
百度一下
腾讯视频
Search
1
你要的草莓熊来啦!——郑科院
1,253 阅读
2
郑州科技学院2023-2024学年第一学期期末统一考试 Python程序设计
1,175 阅读
3
第4章 实训2 删除年龄异常数据
1,009 阅读
4
Python程序设计教学大纲(董付国老师版)
978 阅读
5
郑州科技学院2022-2023年第二学期期末统一考试 管理学 课程试题
917 阅读
默认分类
登录
/
注册
Search
庞立智
累计撰写
71
篇文章
累计收到
289
条评论
首页
栏目
默认分类
页面
关于
推荐
百度一下
腾讯视频
搜索到
52
篇与
的结果
2024-02-29
机器学习实训1
某部电影的宣传部门为了确定电影首映的影院,现对所在地区的影院的电影票舊卖情兄和影院容纳量等信息进行调查,调查结果存储于“电影票数据.csv“中。电影票数据(主要包含不同电影在不同影院的销售情况与放映历史,其特征说明如表7.9所示通过构建 K-Means 模型对数据进行聚类,并对模型进行评价,以确定满足要求的首映影院,以及划分的各个影院类别情况,具体操作步骤如下。(1)读取“电影票数据.csv”数据集。(2)筛选出与影院有关的特征,并处理缺失值,将处理后的数据赋值给新建的cinema数据框。(3)使用K-Means 模型对“cinema”数据进行聚类。(4)使用轮廓系数评价法对模型进行评价,并绘制轮廓系数走势图
2024年02月29日
150 阅读
0 评论
4 点赞
2024-01-11
基于Python的実証経済学(じっしょうけいざいがく)応用
一、引言 对于大学生而言,本科或研究生生涯的最后一项挑战往往是学位论文,而由于前期筹备升学、实习求职、休闲娱乐等其他事务耗费了大量时间,因此如何速成一篇合格的学位论文便成了最后一个学期的主要矛盾:大部分人求学的最终目标是获取证书,论文不合格可能导致无法实现该目标,而近年来教育部对学位论文的审查态度明显趋严。就经管领域的学位论文而言,其论证方法大致包括以下三种:一、是基于经济金融理论的文字分析,二、是基于数理模型的逻辑论证,三、是基于历史数据或数值模拟的数据论证。通常而言,纯文字的案例分析类论文难以体现工作量且往往 重复率较高 ,复杂的数理模型推导不能一蹴而就,此时计量实证类论文便成了大多数同学最具性价比的选择。当前,主流的计量分析工具包括各类统计软件(如Stata、Eviews、SPSS等)与少量脚本语言(R、Python等)。其中,统计软件的优点在于简单易操作,脚本语言的优点则在于灵活性强且代码可复用。对于没有代码基础且只是希望快速完成学位论文的同学而言,统计软件的性价比优于脚本语言。 对于长期使用脚本语言编程的同学而言,使用R或Python能够带来论文写作效率的提升。 在此前撰写论文的过程中,本人发现当前统计领域R语言的开发和学习生态明显优于Python,网上关于使用Python进行计量分析的学习资料较少。而由于近年来Python的使用者明显增加,不少同学有该方面的学习需求,因此本文后续将以Python作为计量分析工具,对相关内容进行说明。二、论文结构与写作步骤 2.1 计量实证类学位论文的基本结构通常而言,一个完整的计量实证类论文包括引言、文献综述、研究设计、实证分析、结论与展望等章节:引言部分一般包括研究背景、研究意义、研究创新、论文结构等内容;如果文章探究A对B的影响,则文献综述可依次论述A对B的影响机制、A、B、文献评述等内容;在文献分析与理论分析基础上,研究设计可依次论述研究假说、变量说明、模型设计等内容;实证分析章节可依次论述描述性统计、实证回归、经济学解释、异质性分析、稳健性检验等内容;结论与展望可依次论述研究结论、政策建议、不足与展望等内容。在上述文章框架的基础上进行写作,一篇字数在3万以上、篇幅达四五十页的学位论文便基本成型,能够满足大多数高校对于硕士学位论文篇幅的要求。2.2 论文写作的大致步骤论文的实际写作过程并非按照论文结构顺序依次进行。一般来说,只有当论文的核心成果做出来之后,我们才开始总体论文的写作。具体而言,学位论文的写作大致包含以下步骤:确定大致的研究方向(通常选取自己熟悉且感兴趣的研究领域);查阅文献及相关资料(知网、学校图书馆资源、谷歌学术等);做计量,得出核心结论,确定论文题目;补充论文其他部分;根据老师意见与查重结果,反复修改直至提交。三、文献的搜索与阅读 3.1 常见的文献搜寻渠道就电子期刊而言,中国知网、谷歌学术、万方、超星等常用的文献服务平台能够解决90%以上的期刊文献搜索需求,SCI-HUB亦可作为备用的期刊下载渠道。就普通图书、学位论文等资源而言,各高校图书馆是重要的文献搜寻渠道。3.2 重点参考文献在熟练掌握文献搜索方法后,如果论文的研究领域并非前无古人,那么我们往往会搜索到大量相关文献,此时选择性的阅读与参考关乎论文写作效率。首先,文献阅读时应重点考虑有影响力的期刊论文,主要包括高引论文、重点期刊论文两类。其中,高引论文的查找可在文献搜索时根据引用量降序排列,重点期刊主要以影响因子为标准。很多时候,评审老师会重点关注学位论文的参考文献,多引用些重点期刊论文往往是评价的加分项。在我国,存在七个核心期刊筛选体系,包括北京大学图书馆“中文核心期刊”、南京大学“CSSCI来源期刊”、中国科学院文献情报中心“中国科学引文数据库(CSCD)来源期刊”等。就经管领域而言,影响较大的重点期刊包括《中国社会科学》、《经济研究》、《金融研究》、《世界经济》、《中国工业经济》、《经济学季刊》、《管理世界》、《南开管理评论》、《管理科学学报》、《系统工程理论与实践》、《管理评论》等。国际上影响较大的经济金融类期刊包括American Economic Review, Econometrica, Journal of Political Economy, Quarterly Journal of Economics, Review of Economic Studies, Journal of Finance, Journal of Financial Economics等。《经济研究》是我国经管领域重点期刊之一其次,阅读本校往届学位论文有助于了解学校往年的学位论文写作规范。其中,时间越接近当前的学位论文,其参考价值越大。最后,在文献阅读初期优先看中文文献,不要一开始就花大量时间看英文文献,对于大多数人而言看外文文献的效率并不高。3.3 文献阅读方法首先,如果要了解相关研究总貌,应当阅读综述性论文(题目中包含“文献综述”或“literature review”)或经典论文的文献综述。其次,如果要了解相关领域的最新研究进展,可以考虑在经典论文的引证文献中找近几年的重点期刊论文。最后,在单篇文献的阅读过程中,不需要一开始便通篇详细阅读,阅读优先级可以考虑:题目——>摘要——>结论——>模型——>其他部分。四、计量模型分析 4.1 计量分析的基本套路不同的研究问题往往对应于不同特征的数据,而不同特征的数据往往对应于不同的计量分析方法。从数据维度来看,典型的数据类型主要包括截面数据、时间序列数据、面板数据(静态面板或动态面板、平衡面板或非平衡面板)三种。不过就计量分析而言,研究更关注往往在于变量是否存在共线性、异方差、自相关、平稳遍历、协整等特征,各种复杂的计量方法本质上是为了克服经济数据的缺陷。事实上,如果能够确保数据符合经典假设,普通的OLS估计量便具备BLUE性质,此时也没必要采取更为复杂的计量方法。以宏观金融类研究问题为例,该类问题往往对应于时间序列数据,且数据可能存在自相关、非平稳等特征。基于此,时间序列数据的常见计量分析范式主要有以下两种:一是在各变量“平稳且遍历”或“同阶单整且协整”的基础上进行OLS回归,二是考虑构建VAR系列模型(如VAR、VECM、FAVAR、TVP-VAR、TVP-SV-FVAR等)。此外,单变量的时间序列分析还可考虑ARIMA模型,但由于实证类论文往往涉及多个变量的关系,因此单变量分析可能过于简单了。就时间序列分析而言,典型的论文写作套路包括平稳性检验、协整检验、格兰杰因果检验、脉冲响应分析、方差分解等部分。与计量作业不同,学位论文往往对研究创新和文章篇幅有一定要求,因此本文简单介绍一些增加创新点与扩充篇幅的基本套路。首先,考虑在计量模型中增加一些特定变量,如门槛变量、平方项、交叉项、控制变量等。其中,加入门槛变量能够说明解释变量对被解释变量影响机制的门槛效应;平方项刻画了U形或倒U形的曲线形态,解释变量的边际效应与其自身大小相关;交叉项刻画了其他变量对解释变量影响机制的作用;合理的控制变量能够缓解计量模型的内生性问题。其次,根据数据特征进行合适的假设检验,如时间序列的平稳性检验、面板数据的豪斯曼检验、以及说明各变量是否存在共线性的VIF检验等。再次,采用不同的算法对模型参数进行估计,如最小二乘法估计(OLS)、最大似然估计(MLE)、矩估计(MM)等。如果各算法所得结论相同,则论证模型的稳健性;如果不同参数估计的结论有所差异,则在不同参数估计方法间进行选择。最后,在基准回归模型结果的基础上,对模型进行异质性分析和稳健性检验(如样本数据划分、更改模型变量的计量方法等)。4.2 基于Python的计量分析实际操作首先,计量分析从找数据开始。常用的数据库包括Wind、国泰安、锐思等,免费的数据获取渠道包括统计局、统计年鉴等。通过观察参考文献如何获取数据也有助于定位相关数据的获取渠道。其次,本文介绍一些常用的Python数据分析与统计包。就 数据分析与处理 而言,pandas、numpy、sklearn较为常用;就 计量分析而言 , statsmodels是Python中少数功能较全的包。总而言之,在代码撰写过程中,主要面向百度与说明文档编程。#导入所需要的 ライブラリ import numpy as np import pandas as pd import statsmodels.api as sm from sklearn import preprocessing import matplotlib.pyplot as plt再次,使用上述包可以很方便地进行数据读取、描述性统计、相关性矩阵、预处理、OLS回归等操作,示例代码如下:## 读取数据,pandas可较为方便地读取Excel、CSV、pickle等类型的数据 path = './时间序列数据.xlsx' #正解放入パース重要、じゃないと読み込めません。 df = pd.read_excel(path,sheet_name='汇总',index_col=0) df = df.dropna() df.index = pd.to_datetime(df.index) vars = ['被解释变数','变数1','变数2','变数3','变数4','变数5','变数6'] df_model0 = df[vars] ## 描述性统计 df_des = df_model0.describe() df_des.to_excel('./描述性统计.xlsx') ## 相关性矩阵 df_cor = df_model0.corr(method='pearson') df_cor.to_excel('./相关性矩阵.xlsx') ## 数据预处理 scaler = preprocessing.StandardScaler() ##Z-score标准化,提高了数据可比性, 削弱了数据解释性。 df_preprocessing = scaler.fit_transform(df_model0) ## OLS回归 X0 = sm.add_constant(df_model0.iloc[:, 1:]) y0 = df_model0.iloc[:, 0] results0 = sm.OLS(y0, X0).fit() print(results0.summary()) print(results0.pvalues) print(results0.params)最后,本文在时间序列数据的基础上,给出平稳性检验、协整检验、格兰杰因果检验、VAR、脉冲响应分析、方差分解等常用分析的代码示例:## 时间序列分析 #平稳性检验 adf_test = sm.tsa.stattools.adfuller alpha = 0.05 ts0 = df_model0['被解释变数']# 変数変量より理解しやすい adf = adf_test(ts0 ,regression='ct', autolag='AIC', regresults=True) pvalue_adf = adf[1] #重点关注ADF检验P值 # ADF检验需要依次检验三类方程结果,为了更好地判定时间序列的单整阶数,将该步骤整合封装为函数 def orderDistinguish(ts): ''' :param ts: array_like, 1d, The data series to test. :return: int, 单整阶数 ''' order = 0 while True: if order > 100: break elif adf_test(ts ,regression='ct', autolag='AIC', regresults=True)[1] < alpha or \ adf_test(ts, regression='c', autolag='AIC', regresults=True)[1] < alpha or \ adf_test(ts, regression='nc', autolag='AIC', regresults=True)[1] < alpha: break else: order += 1 ts = pd.Series(ts).diff().dropna().values return order order0 = orderDistinguish(df_model0['被解释变数']) print(order0) ## 查看模型中各变量的单整阶数 for var in df.columns.values.tolist(): order = orderDistinguish(df[var]) print(var,"的单整阶数为:",order) ## 协整检验 coint = sm.tsa.stattools.coint ## Engle-Granger两步法协整检验 res_coint0 = coint(y0, df_model0.iloc[:, 1:6], trend='c', method='aeg',autolag='aic') #该函数的协整检验最多只能检验6个变量,变量较多时建议使用Johansen协整检验 pvalue_coint = res_coint0[1] #重点关注协整检验P值 coint1 = sm.tsa.var.vecm.coint_johansen ## Johansen协整检验 res_coint1 = coint1(df_model0,det_order=1,k_ar_diff=2) ## 格兰杰因果检验 from statsmodels.tsa.stattools import grangercausalitytests maxLag = 5 gc_data = df_model0[['被解释变数','变数1']] # whether the time series in the second column Granger causes the time series in the first column. gc_res = grangercausalitytests(gc_data, maxLag) ## VAR模型 from statsmodels.tsa.api import VAR df_model1 = df[['被解释变数','变数1','变数2']] model_var = VAR(df_model1.diff().dropna()) #做差分的目的在于使数据变为平稳时间序列,此时模型的可解释性有所下降 res_var = model_var.fit(maxlags=5, ic='aic') print(res_var.summary()) #由于VAR模型估计的参数过多,因此其系数正负并不像OLS那样具有明确的经济意义,此时分析往往更关注脉冲响应和方差分解 lag_order = res_var.k_ar print('模型选择的滞后阶数为:\t',lag_order) ## 脉冲响应分析 irf = res_var.irf(12) plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号 irf.plot(impulse = '变数1', response='被解释变数') plt.show() ## 方差分解 fevd = res_var.fevd(12) print(fevd.summary()) # fevd.plot(figsize=(12, 16)) fevd.plot() plt.show()最近看到的特别好的一篇文章,分享给我的学生们,也希望其能够对其他朋友的论文写作提供一定参考。
2024年01月11日
146 阅读
0 评论
3 点赞
2023-11-27
第6章 任务6.4 构建并评价回归模型(标签是连续的)
回归模型是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。例如,司机的鲁莽驾驶与道路交通事故数量之间的关系,最好的研究方法就是回归。它是最为人熟知的建模技术之一。线性回归通常是人们在学习预测模型时首选的技术之一。在这种技术中,因变量是连续的,自变量可以是连续的也可以是离散的,回归线的性质是线性的。线性回归使用最佳的拟合直线(也就是回归线)在因变量(Y)和一个或多个自变量(X)之间建立一种关系。用一个方程式来表示它,即Y = a +bx +e其中a表示截距,b表示直线的斜率,e是误差项。这个方程可以根据给定的预测变量(s)来预测目标变量的值。代码6-15 使用sklearn估计器构建线性回归模型import pandas as pd # 读取数据集 concrete = pd.read_csv('../data/concrete.csv', encoding='gbk') # 拆分数据和标签 concrete_data = concrete.iloc[:, :-1] concrete_target = concrete.iloc[:, -1] # 划分训练集和测试集 from sklearn.model_selection import train_test_split concrete_data_train, concrete_data_test, \ concrete_target_train, concrete_target_test = \ train_test_split(concrete_data, concrete_target, test_size=0.2, random_state=20) from sklearn.linear_model import LinearRegression concrete_linear = LinearRegression().fit(concrete_data_train, concrete_target_train) # 预测测试集结果 y_pred = concrete_linear.predict(concrete_data_test) print('预测前20个结果为:','\n', y_pred[: 20]) 代码6-16 本次回归结果的可视化import matplotlib.pyplot as plt from matplotlib import rcParams rcParams['font.sans-serif'] = 'SimHei' fig = plt.figure(figsize=(12, 6)) # 设定空白画布,并制定大小 plt.plot(range(concrete_target_test.shape[0]), list(concrete_target_test), color='blue') plt.plot(range(concrete_target_test.shape[0]), y_pred, color='red', linewidth=1.5, linestyle='-.') plt.legend(['真实值', '预测值']) plt.savefig('../tmp/回归结果.jpg', dpi=1080) plt.show() # 显示图片 代码6-17 线性回归模型的评价from sklearn.metrics import explained_variance_score,\ mean_absolute_error, mean_squared_error,\ median_absolute_error, r2_score print('diabetes数据线性回归模型的平均绝对误差为:', mean_absolute_error(concrete_target_test, y_pred)) print('diabetes数据线性回归模型的均方误差为:', mean_squared_error(concrete_target_test, y_pred)) print('diabetes数据线性回归模型的中值绝对误差为:', median_absolute_error(concrete_target_test, y_pred)) print('diabetes数据线性回归模型的可解释方差值为:', explained_variance_score(concrete_target_test, y_pred)) print('diabetes数据线性回归模型的R方值为:', r2_score(concrete_target_test, y_pred))
2023年11月27日
187 阅读
0 评论
2 点赞
2023-11-27
第6章 任务6.3 构建并评价分类模型(人以群分)
先理解svm是什么,怎么运作的。(Support Vector Machine, SVM)根据维度不同,划分方法不同。支持向量机(Support Vector Machine, SVM)是一类按监督学习(supervised learning)方式对数据进行二元分类的广义线性分类器(generalized linear classifier),其决策边界是对学习样本求解的最大边距超平面(maximum-margin hyperplane)代码6-10 使用sklearn 估计器构建支持向量机模型import pandas as pd # 读取数据集 quit_job = pd.read_csv('../data/quit_job.csv', encoding='gbk') # 拆分数据和标签 quit_job_data = quit_job.iloc[:, :-1] quit_job_target = quit_job.iloc[:, -1] # 划分训练集和测试集 from sklearn.model_selection import train_test_split quit_job_data_train, quit_job_data_test, \ quit_job_target_train, quit_job_target_test = \ train_test_split(quit_job_data, quit_job_target, test_size=0.2, random_state=66) # 标准化数据集 from sklearn.preprocessing import StandardScaler stdScale = StandardScaler().fit(quit_job_data_train) quit_job_trainScaler = stdScale.transform(quit_job_data_train) quit_job_testScaler = stdScale.transform(quit_job_data_test) # 构建SVM模型,并预测测试集结果 from sklearn.svm import SVC svm = SVC().fit(quit_job_trainScaler, quit_job_target_train) # 预测训练集结果 quit_job_target_pred = svm.predict(quit_job_testScaler) print('预测前20个结果为:\n', quit_job_target_pred[: 20])代码6-11 对于分类结果是否准确进行测试import numpy as np # 求出预测和真实一样的数目 true = np.sum(quit_job_target_pred == quit_job_target_test ) print('预测对的结果数目为:', true) print('预测错的结果数目为:', quit_job_target_test.shape[0] - true) print('预测结果准确率为:', true / quit_job_target_test.shape[0])代码6-12 评价支持向量机模型from sklearn.metrics import accuracy_score,precision_score, \ recall_score,f1_score,cohen_kappa_score print('使用SVM预测quit_job数据的准确率为:', accuracy_score(quit_job_target_test, quit_job_target_pred)) print('使用SVM预测quit_job数据的精确率为:', precision_score(quit_job_target_test, quit_job_target_pred)) print('使用SVM预测quit_job数据的召回率为:', recall_score(quit_job_target_test, quit_job_target_pred)) print('使用SVM预测quit_job数据的F1值为:', f1_score(quit_job_target_test, quit_job_target_pred)) print('使用SVM预测quit_job数据的Cohen’s Kappa系数为:', cohen_kappa_score(quit_job_target_test, quit_job_target_pred)) 代码6-13 输出支持向量机模型评价报告from sklearn.metrics import classification_report print('使用SVM预测customer数据的分类报告为:', '\n', classification_report(quit_job_target_test, quit_job_target_pred)) 代码6-14 绘制ROV曲线from sklearn.metrics import roc_curve import matplotlib.pyplot as plt # 求出ROC曲线的x轴和y轴 fpr, tpr, thresholds = \ roc_curve(quit_job_target_test, quit_job_target_pred) plt.figure(figsize=(10, 6)) plt.xlim(0, 1) # 设定x轴的范围 plt.ylim(0.0, 1.1) # 设定y轴的范围 plt.xlabel('False Postive Rate') plt.ylabel('True Postive Rate') plt.plot(fpr, tpr, linewidth=2, linestyle='-', color='red') plt.plot([0, 1], [0, 1], linestyle='-.', color='blue') plt.savefig('../tmp/ROC曲线.jpg', dpi=1080) plt.show()
2023年11月27日
283 阅读
0 评论
14 点赞
2023-11-24
期末成绩分析之pandas应用
临近期末,要整理很多材料其中就有对成绩的分析。我们可以用pandas的强大功能来实现,避免人为统计失误。比如我要分析 某一班级成绩,要想要求出班级的,最高分,最低分,平均分,以及每个分数段成绩分布情况。我们可以这么做。 首先读取想要班级成绩:import pandas as pd # 读取 Excel 文件 data1 = pd.read_excel('c:/Users/plzy5/Desktop/投资学1-2班.xls') 我们可以先看一下数据长什么样子:data1.head()然后我们可以进取其中的要分析的数据列,用iloc方法:data2 = data1.iloc[:, 3:7] 选取数据之后,我们就可以用describe()方法查看一下统计数据:data2.describe()之后定义成绩段:bins = [0, 60, 70, 80, 90, 100] labels = ['不及格', '及格', '中等', '良好', '优秀']将成绩划分到不同的成绩段:data2 = data2.apply(lambda x: pd.cut(x, bins=bins, labels=labels, right=False))最后,将成绩统计到不同分数段并输出:grade_counts = data2.apply(lambda x: x.value_counts()).T
2023年11月24日
276 阅读
0 评论
9 点赞
1
...
4
5
6
...
11