file-type

LSE数据科学社带你解决Yelp数据挑战

ZIP文件

下载需积分: 10 | 685KB | 更新于2025-09-04 | 64 浏览量 | 0 下载量 举报 收藏
download 立即下载
标题“LSE_Data_Science_Soc”可能指的是伦敦政治经济学院(London School of Economics and Political Science)的某个与数据科学相关的社团或组织。该社团或组织正在发起一个项目,专注于使用数据科学方法来解决 Yelp 上的数据集。 描述中提到的“让我们解决Yelp的数据!”表明这个项目或活动的重点是分析Yelp上收集的商业和用户数据。Yelp是一个美国的本地商业搜索引擎和评价平台,提供对商家的评论、评分、价格等信息。数据科学社团的目标可能是通过数据挖掘、统计分析、机器学习等数据科学方法来提取有用信息,分析商家的评价趋势,预测商业表现,或者是为用户推荐商户等。 描述中还特别强调了代码记录和脚本整洁的重要性。这意味着社团成员在处理数据时应该注重代码的可读性和可维护性,这对于团队合作和项目持久性是非常重要的。保持不同的脚本整洁也有助于其他成员理解和使用代码,这在数据科学项目中尤其重要。良好的代码管理习惯可以包括使用版本控制系统(如Git),编写清晰的注释,遵循一定的编码规范等。 标签“JupyterNotebook”指出了社团成员在处理数据时推荐使用的工具。Jupyter Notebook是一个开源的web应用程序,允许用户创建和共享包含实时代码、方程、可视化和解释文本的文档。它非常适合数据分析、数据科学和机器学习等领域,因为它提供了快速实验、数据可视化、迭代编写代码和协作的环境。在Jupyter Notebook中,代码和结果(如表格、图形等)都会被保存在一个文档中,这样可以在同一位置记录实验的步骤、解释和结果,使得代码的共享和复现变得非常方便。 压缩包子文件的文件名称“LSE_Data_Science_Soc-master”暗示了该社团的项目或代码库的文件结构。通常在版本控制系统中,“master”或“main”分支代表了项目的主分支,是开发过程中的主线,其他分支可能会从这个分支上分叉出去,用于开发新功能或修复问题。在描述中提到的“随意分叉”意味着社团鼓励其成员基于项目的基础代码进行修改和扩展,这是一种鼓励开源贡献和协作开发的常见做法。 总结来说,从给定的文件信息中,我们可以得知伦敦政治经济学院的数据科学社团发起了一个利用数据科学方法分析Yelp数据集的项目,并鼓励成员们保持代码的整洁与记录。他们可能使用Jupyter Notebook作为其数据分析的主要工具,并鼓励成员基于项目的基础代码进行个人化的探索和开发。通过这种方式,社团不仅促进了数据科学的学习和实践,还推动了成员间的协作与创新。

相关推荐

filetype

% 大风重现期计算程序 % 使用极值I型概率分布函数,四种参数估计方法 % 读取Excel文件中sheet1的B2:B46数据 clear; clc; close all; %% 1. 读取数据 filename = 'G:\工作\珠海奕源半导体项目\珠海站重现期处理.xlsx'; % 替换为实际Excel文件路径 data_range = 'B2:B46'; % 数据范围 try wind_speed = xlsread(filename, '处理', data_range); wind_speed = wind_speed(~isnan(wind_speed)); % 去除NaN值 n = length(wind_speed); if n < 2 error('数据量不足,请检查数据范围或文件内容'); end disp(['成功读取 ', num2str(n), ' 个年最大风速数据']); catch err error(['数据读取失败: ', err.message]); end %% 2. 数据排序和经验频率计算 sorted_data = sort(wind_speed); % 升序排列 empirical_prob = (1:n)' / (n + 1); % Weibull公式 recurrence_period_empirical = 1 ./ (1 - empirical_prob); %% 3. 计算四种方法的参数 methods = {'LSE', 'EPM', 'PWM', 'MOM'}; % 英文标识符 method_names = {'最小二乘估计', '经验点矩', '概率权重矩', '常规矩'}; param_estimates = cell(length(methods), 2); % 存储[mu, beta] % 计算各方法的参数 [param_estimates{1, 1}, param_estimates{1, 2}] = lse_estimation(wind_speed); [param_estimates{2, 1}, param_estimates{2, 2}] = epm_estimation(wind_speed); [param_estimates{3, 1}, param_estimates{3, 2}] = pwm_estimation(wind_speed); [param_estimates{4, 1}, param_estimates{4, 2}] = mom_estimation(wind_speed); %% 4. 计算检验指标 Dn和RMSE Dn = zeros(length(methods), 1); RMSE = zeros(length(methods), 1); for i = 1:length(methods) mu = param_estimates{i, 1}; beta = param_estimates{i, 2}; F_theo = exp(-exp(-(sorted_data - mu) / beta)); Dn(i) = max(abs(F_theo - empirical_prob)); RMSE(i) = sqrt(mean((F_theo - empirical_prob).^2)); end %% 5. 计算不同重现期对应的风速 T_values = [3, 5, 10, 20, 50, 100]; wind_speed_T = zeros(length(methods), length(T_values)); for i = 1:length(methods) mu = param_estimates{i, 1}; beta = param_estimates{i, 2}; wind_speed_T(i, :) = mu - beta * log(-log(1 - 1 ./ T_values)); end %% 6. 输出结果 disp(' '); disp('===== 参数估计结果 ====='); result_table = table(); result_table.FF = method_names'; result_table.mu = [param_estimates{:, 1}]'; result_table.beta = [param_estimates{:, 2}]'; result_table.Dn = Dn; result_table.RMSE = RMSE; disp(result_table); disp(' '); disp('===== 不同重现期对应的风速 (m/s) ====='); T_table = table(); T_table.CXQ = T_values'; for i = 1:length(methods) T_table.(methods{i}) = wind_speed_T(i, :)'; end disp('各方法缩写说明:LSE=最小二乘估计, EPM=经验点矩, PWM=概率权重矩, MOM=常规矩'); disp(T_table); %% 7. 绘制图表 % 7.1 理论分布对比图(删除经验分布,EPM改为点图) figure('Name', '理论分布对比', 'Position', [100, 100, 800, 600]); hold on; grid on; for i = 1:length(methods) mu = param_estimates{i, 1}; beta = param_estimates{i, 2}; x_range = linspace(min(sorted_data), max(sorted_data), 100); F_theo = exp(-exp(-(x_range - mu) / beta)); % 经验点矩(EPM)用点图,其他方法用线图 if i == 2 % EPM是第2个方法 plot(x_range, F_theo, 'bo', 'MarkerFaceColor', 'b', 'DisplayName', method_names{i}); else plot(x_range, F_theo, 'LineWidth', 1.5, 'DisplayName', method_names{i}); end end xlabel('风速 (m/s)'); ylabel('累积概率'); title('极值I型理论分布对比'); legend('Location', 'best'); box on; % 7.2 重现期与风速关系图(删除经验分布,EPM改为点图) figure('Name', '重现期与风速关系', 'Position', [200, 200, 800, 600]); hold on; grid on; T_plot = linspace(min(recurrence_period_empirical), max(T_values), 200); for i = 1:length(methods) mu = param_estimates{i, 1}; beta = param_estimates{i, 2}; wind_plot = mu - beta * log(-log(1 - 1 ./ T_plot)); % 经验点矩(EPM)用点图,其他方法用线图 if i == 2 % EPM是第2个方法 loglog(T_plot, wind_plot, 'bo', 'MarkerFaceColor', 'b', 'DisplayName', method_names{i}); else loglog(T_plot, wind_plot, 'LineWidth', 1.5, 'DisplayName', method_names{i}); end end plot(T_values, ones(size(T_values))*min(ylim), 'ro', 'MarkerFaceColor', 'r'); text(T_values, ones(size(T_values))*min(ylim), arrayfun(@(x) sprintf('%d年',x), T_values, 'UniformOutput', false), ... 'VerticalAlignment', 'bottom', 'HorizontalAlignment', 'center'); xlabel('重现期 (年)'); ylabel('风速 (m/s)'); title('重现期与风速关系图'); xlim([min(recurrence_period_empirical), max(T_values)]); legend('Location', 'best'); box on; % 7.3 检验指标对比图(保持不变) figure('Name', '检验指标对比', 'Position', [300, 300, 800, 500]); subplot(1, 2, 1); bar(Dn); set(gca, 'XTickLabel', method_names, 'XTick', 1:length(methods)); ylabel('Dn值'); title('Kolmogorov-Smirnov检验统计量'); grid on; subplot(1, 2, 2); bar(RMSE); set(gca, 'XTickLabel', method_names, 'XTick', 1:length(methods)); ylabel('RMSE值'); title('均方根误差'); grid on; % 添加总标题 axes('Position',[0 0 1 1],'XAxisLocation','top','YAxisLocation','left',... 'XLim',[0 1],'YLim',[0 1],'Box','off','Visible','off','Units','normalized'); text(0.5, 0.95, '不同参数估计方法的检验指标对比', ... 'HorizontalAlignment', 'center', 'VerticalAlignment', 'top', ... 'FontSize', 12, 'FontWeight', 'bold'); end % 3.1 最小二乘估计 (LSE) function [mu, beta] = lse_estimation(data) n = length(data); sorted_data = sort(data); p = (1:n)' / (n + 1); y = -log(-log(p)); % 极值I型分布的概率点 X = [sorted_data ones(n, 1)]; b = X \ y; % 最小二乘估计 beta = 1 / b(1); mu = -b(2) * beta; end % 3.2 经验点矩估计 (EPM) function [mu, beta] = epm_estimation(data) sorted_data = sort(data); n = length(sorted_data); m1 = mean(sorted_data); m2 = mean(sorted_data.^2); gamma = 0.5772; % 欧拉常数 beta = sqrt(6) / pi * sqrt(m2 - m1^2); mu = m1 - gamma * beta; end % 3.3 概率权重矩估计 (PWM) function [mu, beta] = pwm_estimation(data) sorted_data = sort(data); % 升序排列 n = length(sorted_data); % 计算概率权重矩 b0 = mean(sorted_data); weights = (1:n)' / (n + 1); b1 = sum(sorted_data .* weights) / n; % 极值I型分布PWM参数估计公式 beta = (b0 - b1) * pi / sqrt(6); % 尺度参数 gamma = 0.5772; % 欧拉常数 mu = b0 - gamma * beta; % 位置参数 end % 3.4 常规矩估计 (MOM) function [mu, beta] = mom_estimation(data) m = mean(data); s = std(data); beta = s * sqrt(6) / pi; gamma = 0.5772; % 欧拉常数 mu = m - gamma * beta; end 以上代码中pwm法计算结果和另外三种参数估计法差距很大,需要解决

filetype

u8 RTC_Init(void) { //检查是不是第一次配置时钟 u8 temp=0; RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); //使能PWR和BKP外设时钟 PWR_BackupAccessCmd(ENABLE); //使能后备寄存器访问 if (BKP_ReadBackupRegister(BKP_DR1) != 0xA5A5) //从指定的后备寄存器中读出数据:读出了与写入的指定数据不相乎 { BKP_DeInit(); //复位备份区域 RCC_LSEConfig(RCC_LSE_ON); //设置外部低速晶振(LSE),使用外设低速晶振 while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET&&temp<250) //检查指定的RCC标志位设置与否,等待低速晶振就绪 { temp++; delay_ms(10); } if(temp>=250)return 1;//初始化时钟失败,晶振有问题 RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //设置RTC时钟(RTCCLK),选择LSE作为RTC时钟 RCC_LSEConfig(RCC_LSE_ON); RCC_RTCCLKCmd(ENABLE); //使能RTC时钟 RTC_WaitForLastTask(); //等待最近一次对RTC寄存器的写操作完成 RTC_WaitForSynchro(); //等待RTC寄存器同步 RTC_ITConfig(RTC_IT_SEC|RTC_IT_ALR, ENABLE); //使能RTC秒中断 RTC_WaitForLastTask(); //等待最近一次对RTC寄存器的写操作完成 RTC_EnterConfigMode();/// 允许配置 RTC_SetPrescaler(32767); //设置RTC预分频的值 RTC_WaitForLastTask(); //等待最近一次对RTC寄存器的写操作完成 RTC_Set(2025,4,1,15,51,00);//设置时间 RTC_Alarm_Set(00,00,10); RTC_ExitConfigMode(); //退出配置模式 BKP_WriteBackupRegister(BKP_DR1, 0X5050); //向指定的后备寄存器中写入用户程序数据 } else//系统继续计时 { RTC_WaitForSynchro(); //等待最近一次对RTC寄存器的写操作完成 RTC_ITConfig(RTC_IT_SEC, ENABLE); //使能RTC秒中断 RTC_WaitForLastTask(); //等待最近一次对RTC寄存器的写操作完成 } RTC_NVIC_Config();//RCT中断分组设置 RTC_Get();//更新时间 return 0; //ok }

绘画窝
  • 粉丝: 34
上传资源 快速赚钱