协同过滤算法在民宿推荐系统中的应用:从理论到代码实现

news2026/3/25 11:02:54
协同过滤算法在民宿推荐系统中的实战指南引言当你在旅行网站上浏览民宿时是否曾被那些猜你喜欢的推荐所吸引这些看似神奇的推荐背后往往隐藏着协同过滤算法的智慧。作为推荐系统领域的经典算法协同过滤通过挖掘用户行为数据中的隐藏模式能够精准预测用户的偏好。本文将带你深入探索这一算法在民宿推荐场景中的实际应用从理论基础到代码实现一步步构建属于你自己的推荐引擎。不同于传统的酒店预订民宿因其独特的个性化体验而备受青睐。然而海量的选择也带来了信息过载的问题——用户往往需要花费大量时间筛选房源。这正是推荐系统的价值所在通过算法理解用户偏好自动过滤无关选项呈现最可能符合用户口味的民宿推荐。1. 协同过滤算法基础解析1.1 算法核心思想协同过滤(Collaborative Filtering)的基本假设是过去有相似偏好的用户在未来也会表现出相似的偏好。这种人以群分的思想使其成为推荐系统中最为直观和有效的算法之一。算法主要分为两类基于用户的协同过滤(User-based CF)寻找与目标用户相似的其他用户然后推荐这些相似用户喜欢的物品基于物品的协同过滤(Item-based CF)寻找与目标物品相似的其他物品然后推荐给喜欢目标物品的用户在民宿推荐场景中我们通常会收集以下关键数据数据类型示例用途用户评分用户A对民宿X的评分为4.5星直接反映用户偏好浏览记录用户B查看了民宿Y的详情页3次间接反映用户兴趣收藏行为用户C将民宿Z加入心愿单强烈偏好信号预订历史用户D曾预订过民宿W实际消费行为1.2 相似度计算方法协同过滤的核心在于计算用户或物品之间的相似度。以下是几种常用的相似度度量方法# 余弦相似度计算示例 import numpy as np from sklearn.metrics.pairwise import cosine_similarity def cosine_sim(user1, user2): 计算两个用户向量之间的余弦相似度 :param user1: 用户1的评分向量 :param user2: 用户2的评分向量 :return: 相似度值范围[-1,1] return cosine_similarity([user1], [user2])[0][0] # 示例用户评分向量对5个民宿的评分0表示未评分 user_a [4, 0, 5, 0, 3] user_b [5, 4, 0, 2, 0] print(f余弦相似度: {cosine_sim(user_a, user_b):.2f})其他常用相似度计算方法包括皮尔逊相关系数考虑用户评分偏好的相关性杰卡德相似系数适用于二元数据如点击/未点击调整余弦相似度解决用户评分尺度不一致的问题提示在实际应用中通常需要对原始评分数据进行中心化处理减去用户平均分以减少用户评分习惯差异带来的偏差。2. 民宿推荐系统架构设计2.1 整体系统架构一个完整的民宿推荐系统通常包含以下几个核心组件数据采集层通过网络爬虫获取民宿基础信息和用户行为数据数据存储层使用分布式存储系统如Hadoop HDFS管理海量数据数据处理层进行数据清洗、特征工程和模型训练推荐引擎实现协同过滤等推荐算法服务接口层通过REST API提供推荐服务可视化展示将推荐结果和数据分析直观呈现给用户graph TD A[数据采集] -- B[数据存储] B -- C[数据处理] C -- D[推荐引擎] D -- E[服务接口] E -- F[可视化展示]2.2 技术栈选择针对民宿推荐场景的特点我们可以选择以下技术组合组件技术选项考量因素后端框架SpringBoot快速开发、微服务友好数据处理Hadoop/Spark处理大规模用户行为数据数据存储MySQL Redis结构化数据缓存加速推荐算法协同过滤矩阵分解平衡准确性和实时性可视化ECharts/D3.js丰富的图表展示能力注意对于中小规模的数据集可以先用Pandas进行算法原型开发待验证效果后再迁移到分布式环境。3. 数据准备与特征工程3.1 民宿数据爬取与清洗获取高质量的民宿数据是推荐系统成功的前提。我们可以通过以下步骤构建数据集确定目标平台选择房源丰富、信息结构化的民宿平台设计爬虫策略遵守robots.txt协议设置合理的请求间隔处理反爬机制数据清洗处理缺失值统一价格单位标准化地理位置信息去除重复房源# 简单的民宿数据清洗示例 import pandas as pd def clean_listing_data(raw_df): 清洗原始民宿数据 :param raw_df: 原始数据DataFrame :return: 清洗后的DataFrame # 处理价格字段 raw_df[price] raw_df[price].str.replace(¥, ).str.replace(,, ).astype(float) # 处理评分字段 raw_df[rating] pd.to_numeric(raw_df[rating], errorscoerce) raw_df[rating] raw_df[rating].fillna(raw_df[rating].mean()) # 处理设施标签 raw_df[facilities] raw_df[facilities].apply( lambda x: [f.strip() for f in x.split(;)] if isinstance(x, str) else []) return raw_df # 加载示例数据 sample_data pd.read_csv(raw_listings.csv) cleaned_data clean_listing_data(sample_data)3.2 用户行为数据建模用户与民宿的交互行为可以建模为用户-物品矩阵其中每个元素表示用户对物品的偏好程度民宿1 民宿2 民宿3 民宿4 用户A 4 0 5 0 用户B 0 3 0 4 用户C 2 0 0 1在实际应用中我们需要考虑显式反馈用户明确给出的评分如1-5星隐式反馈浏览时长、收藏、分享等行为时间衰减近期行为比历史行为更有参考价值# 构建用户-物品交互矩阵 from scipy.sparse import csr_matrix def build_interaction_matrix(ratings_df, n_users, n_items): 将评分数据转换为稀疏矩阵格式 :param ratings_df: 包含user_id, item_id, rating的DataFrame :param n_users: 用户总数 :param n_items: 物品总数 :return: 稀疏的交互矩阵 rows ratings_df[user_id].values cols ratings_df[item_id].values data ratings_df[rating].values return csr_matrix((data, (rows, cols)), shape(n_users, n_items)) # 示例将用户评分转换为矩阵 ratings_data pd.DataFrame({ user_id: [0, 0, 1, 1, 2, 2], item_id: [0, 2, 1, 3, 0, 3], rating: [4, 5, 3, 4, 2, 1] }) interaction_matrix build_interaction_matrix(ratings_data, n_users3, n_items4)4. 算法实现与优化4.1 基于用户的协同过滤实现以下是基于用户的协同过滤算法的Python实现from sklearn.metrics.pairwise import cosine_similarity from scipy.sparse import csr_matrix import numpy as np class UserBasedCF: def __init__(self, k20): self.k k # 近邻数量 self.user_sim None def fit(self, user_item_matrix): 训练模型计算用户相似度矩阵 # 计算用户之间的余弦相似度 self.user_sim cosine_similarity(user_item_matrix) np.fill_diagonal(self.user_sim, 0) # 将对角线置零 def predict(self, user_id, item_ids, user_item_matrix): 预测用户对目标物品的评分 # 获取最相似的k个用户 sim_users np.argsort(-self.user_sim[user_id])[:self.k] # 计算加权平均评分 predictions [] for item_id in item_ids: # 找到评价过该物品的相似用户 rated_users user_item_matrix[:, item_id].nonzero()[0] valid_users np.intersect1d(sim_users, rated_users) if len(valid_users) 0: predictions.append(0) # 无预测时返回0 continue # 计算加权评分 sim_scores self.user_sim[user_id, valid_users] ratings user_item_matrix[valid_users, item_id].toarray().flatten() weighted_avg np.dot(sim_scores, ratings) / (np.sum(sim_scores) 1e-8) predictions.append(weighted_avg) return np.array(predictions)4.2 基于物品的协同过滤实现基于物品的协同过滤通常更适合民宿推荐场景因为民宿数量通常远小于用户数量物品相似度比用户相似度更稳定计算可以离线进行响应更快class ItemBasedCF: def __init__(self, k20): self.k k # 近邻数量 self.item_sim None def fit(self, user_item_matrix): 训练模型计算物品相似度矩阵 # 转置矩阵计算物品相似度 item_user_matrix user_item_matrix.T self.item_sim cosine_similarity(item_user_matrix) np.fill_diagonal(self.item_sim, 0) # 将对角线置零 def predict(self, user_id, item_ids, user_item_matrix): 预测用户对目标物品的评分 predictions [] user_ratings user_item_matrix[user_id].toarray().flatten() for item_id in item_ids: # 获取用户评价过的物品 rated_items user_ratings.nonzero()[0] if len(rated_items) 0: predictions.append(0) continue # 找到与目标物品最相似的k个已评价物品 sim_items np.argsort(-self.item_sim[item_id])[:self.k] valid_items np.intersect1d(sim_items, rated_items) if len(valid_items) 0: predictions.append(0) continue # 计算加权平均评分 sim_scores self.item_sim[item_id, valid_items] ratings user_ratings[valid_items] weighted_avg np.dot(sim_scores, ratings) / (np.sum(sim_scores) 1e-8) predictions.append(weighted_avg) return np.array(predictions)4.3 算法优化策略为了提高推荐质量我们可以采用以下优化方法冷启动处理新用户利用人口统计信息或引导选择兴趣标签新民宿基于内容特征位置、价格、设施等推荐混合推荐结合协同过滤与基于内容的推荐加权或级联多种算法结果时间因素为近期行为分配更高权重考虑季节性偏好变化矩阵分解使用SVD或ALS分解用户-物品矩阵发现潜在特征提高泛化能力# 使用Surprise库实现矩阵分解 from surprise import SVD, Dataset, Reader def matrix_factorization(train_data, test_data): 使用SVD进行矩阵分解 # 定义数据格式 reader Reader(rating_scale(1, 5)) # 加载数据集 trainset Dataset.load_from_df(train_data[[user_id, item_id, rating]], reader).build_full_trainset() # 训练SVD模型 algo SVD(n_factors50, n_epochs20, lr_all0.005, reg_all0.02) algo.fit(trainset) # 在测试集上评估 testset trainset.build_anti_testset() predictions algo.test(testset) return predictions5. 系统集成与效果评估5.1 推荐系统API实现使用SpringBoot构建推荐服务的REST APIRestController RequestMapping(/api/recommend) public class RecommendationController { Autowired private RecommendationService recommendationService; GetMapping(/user/{userId}) public ResponseEntityListRecommendation getUserRecommendations( PathVariable Long userId, RequestParam(defaultValue 10) int size) { ListRecommendation recommendations recommendationService .getUserBasedRecommendations(userId, size); return ResponseEntity.ok(recommendations); } GetMapping(/item/{itemId}) public ResponseEntityListRecommendation getSimilarItems( PathVariable Long itemId, RequestParam(defaultValue 10) int size) { ListRecommendation recommendations recommendationService .getItemBasedRecommendations(itemId, size); return ResponseEntity.ok(recommendations); } }5.2 推荐效果评估指标评估推荐系统的常用指标包括准确率指标均方根误差(RMSE)平均绝对误差(MAE)排名指标精确率(PrecisionK)召回率(RecallK)平均精度均值(MAP)归一化折损累计增益(NDCG)多样性指标推荐列表的覆盖率物品间相似度商业指标点击率(CTR)转化率(Conversion Rate)用户停留时长# 推荐系统评估示例 from sklearn.metrics import mean_squared_error def evaluate(predictions, true_ratings): 计算评估指标 # 过滤未评分的预测 mask true_ratings 0 pred predictions[mask] true true_ratings[mask] # 计算RMSE rmse np.sqrt(mean_squared_error(true, pred)) # 计算准确率K k 5 top_k np.argsort(-predictions)[:k] true_top_k np.argsort(-true_ratings)[:k] precision len(np.intersect1d(top_k, true_top_k)) / k return {RMSE: rmse, Precision5: precision}5.3 可视化展示使用ECharts实现推荐结果的可视化// 民宿推荐结果可视化 function renderRecommendations(recommendations) { const chart echarts.init(document.getElementById(recommend-chart)); const option { title: { text: 为您推荐的民宿 }, tooltip: { trigger: item, formatter: {b}: {c} (预测评分) }, xAxis: { type: category, data: recommendations.map(item item.name) }, yAxis: { type: value, name: 预测评分 }, series: [{ data: recommendations.map(item ({ value: item.predictedRating, name: item.name })), type: bar, showBackground: true, itemStyle: { color: function(params) { // 根据评分设置不同颜色 const rating params.value; return rating 4.5 ? #f56c6c : rating 4.0 ? #e6a23c : rating 3.0 ? #67c23a : #909399; } } }] }; chart.setOption(option); }6. 实际应用中的挑战与解决方案6.1 数据稀疏性问题民宿推荐系统面临的数据稀疏性问题尤为突出问题表现大多数用户只评价过极少民宿长尾分布明显热门民宿获得大部分评价用户-物品矩阵中非零元素比例极低解决方案矩阵分解技术如SVD引入辅助信息用户画像、民宿特征迁移学习从其他领域迁移用户偏好6.2 实时性要求民宿预订通常有较强的时效性推荐系统需要近实时更新用户最新浏览、收藏行为应快速影响推荐民宿价格、库存变化需及时反映技术实现流式计算框架如Spark Streaming增量更新算法缓存策略Redis缓存热门推荐# 增量更新用户相似度示例 def update_user_sim(user_id, new_ratings, user_item_matrix, user_sim): 增量更新用户相似度矩阵 :param user_id: 产生新行为的用户ID :param new_ratings: 用户的新评分 {item_id: rating} :param user_item_matrix: 用户-物品矩阵 :param user_sim: 原用户相似度矩阵 :return: 更新后的用户相似度矩阵 # 更新用户向量 for item_id, rating in new_ratings.items(): user_item_matrix[user_id, item_id] rating # 重新计算该用户与其他用户的相似度 updated_sim cosine_similarity(user_item_matrix[user_id:user_id1], user_item_matrix) user_sim[user_id] updated_sim[0] user_sim[:, user_id] updated_sim[0] return user_sim6.3 可解释性需求用户更可能接受有明确理由的推荐解释方法因为您喜欢X民宿所以我们推荐相似的Y民宿与您品味相似的用户也喜欢这些民宿实现示例展示相似民宿的共同特征提供推荐路径的可视化追踪7. 进阶方向与扩展思考7.1 深度学习在推荐系统中的应用传统协同过滤的局限性催生了深度学习方法神经协同过滤(NCF)用神经网络建模用户-物品交互结合矩阵分解与多层感知机图神经网络(GNN)将用户和物品表示为图节点通过消息传递捕捉高阶关系# 简单的神经协同过滤模型框架 import tensorflow as tf from tensorflow.keras.layers import Embedding, Flatten, Concatenate, Dense def build_ncf_model(num_users, num_items, embedding_size64): 构建神经协同过滤模型 # 输入层 user_input tf.keras.Input(shape(1,)) item_input tf.keras.Input(shape(1,)) # 嵌入层 user_embedding Embedding(num_users, embedding_size)(user_input) item_embedding Embedding(num_items, embedding_size)(item_input) # 展平 user_vec Flatten()(user_embedding) item_vec Flatten()(item_embedding) # 连接特征 concat Concatenate()([user_vec, item_vec]) # 全连接层 dense Dense(128, activationrelu)(concat) output Dense(1, activationsigmoid)(dense) # 构建模型 model tf.keras.Model(inputs[user_input, item_input], outputsoutput) model.compile(optimizeradam, lossbinary_crossentropy) return model7.2 多目标优化商业推荐系统通常需要平衡多个目标优化目标点击率(CTR)转化率(CVR)用户满意度平台收益技术方案多任务学习强化学习多臂老虎机算法7.3 情境感知推荐民宿选择高度依赖情境因素关键情境旅行时间季节、节假日同行人员家庭、情侣、独自旅行目的商务、休闲、观光实现方法在协同过滤中引入情境维度构建情境感知的用户分群8. 生产环境部署最佳实践8.1 推荐系统架构设计生产级推荐系统的典型架构┌───────────────────────────────────────────────────────┐ │ 客户端应用 │ └───────────────┬───────────────────────┬───────────────┘ │ │ ┌───────────────▼───────┐ ┌─────────────▼─────────────┐ │ 实时推荐服务 │ │ 批量推荐服务 │ │ (低延迟个性化推荐) │ │ (全量更新深度计算) │ └───────────────┬───────┘ └──────────────┬────────────┘ │ │ ┌───────────────▼────────────────────────▼─────────────┐ │ 推荐计算引擎 │ │ (协同过滤、矩阵分解、深度学习等算法实现) │ └───────────────┬────────────────────────┬─────────────┘ │ │ ┌───────────────▼───────┐ ┌─────────────▼─────────────┐ │ 特征存储系统 │ │ 模型训练平台 │ │ (用户画像、物品特征等) │ │ (离线训练、模型版本管理) │ └───────────────┬───────┘ └──────────────┬────────────┘ │ │ ┌───────────────▼────────────────────────▼─────────────┐ │ 大数据平台 │ │ (用户行为日志、业务数据存储与处理) │ └──────────────────────────────────────────────────────┘8.2 性能优化技巧确保推荐系统高效运行的关键点数据预处理特征标准化稀疏矩阵压缩存储热门物品降权处理算法优化近似最近邻搜索(ANN)采样技术加速训练模型量化与剪枝系统优化多级缓存策略异步计算分布式计算// 使用缓存优化推荐服务示例 Service public class CachedRecommendationService { Autowired private RecommendationEngine recommendationEngine; Autowired private RedisTemplateString, Object redisTemplate; private static final String CACHE_PREFIX rec:; private static final long CACHE_TTL 3600; // 1小时 public ListRecommendation getRecommendations(Long userId, int size) { String cacheKey CACHE_PREFIX userId; // 尝试从缓存获取 ListRecommendation cached (ListRecommendation) redisTemplate.opsForValue().get(cacheKey); if (cached ! null cached.size() size) { return cached.subList(0, size); } // 缓存未命中计算推荐 ListRecommendation fresh recommendationEngine .generateRecommendations(userId, size * 2); // 多取一些 // 更新缓存 redisTemplate.opsForValue().set( cacheKey, fresh, CACHE_TTL, TimeUnit.SECONDS ); return fresh.subList(0, size); } }8.3 监控与迭代持续改进推荐系统的关键指标系统健康指标响应时间错误率吞吐量业务指标推荐点击率转化率用户留存率算法指标离线评估指标A/B测试结果特征重要性变化9. 案例研究个性化民宿推荐实战9.1 数据集分析我们使用从某民宿平台爬取的真实数据集包含用户数据10,000名匿名用户人口统计信息年龄、性别、地域会员等级民宿数据5,000家民宿位置、价格、房型、设施、评分房东信息交互数据150,000条评分记录1-5星300,000条浏览记录50,000条收藏记录# 数据集统计分析 import matplotlib.pyplot as plt def analyze_dataset(ratings_df): 分析评分数据分布 # 用户评分分布 plt.figure(figsize(12, 5)) plt.subplot(1, 2, 1) ratings_df[rating].value_counts().sort_index().plot(kindbar) plt.title(评分分布) # 用户活跃度分布 plt.subplot(1, 2, 2) ratings_df[user_id].value_counts().hist(bins50) plt.title(用户评分数量分布) plt.show() # 计算稀疏度 num_users ratings_df[user_id].nunique() num_items ratings_df[item_id].nunique() num_ratings len(ratings_df) sparsity 1 - num_ratings / (num_users * num_items) print(f数据稀疏度: {sparsity:.2%}) # 加载并分析数据 ratings_data pd.read_csv(bnb_ratings.csv) analyze_dataset(ratings_data)9.2 基准模型建立我们首先实现几个基准模型作为对比热门推荐不考虑用户个性推荐整体最受欢迎的民宿随机推荐完全随机选择民宿作为推荐基于内容的推荐使用民宿特征计算相似度# 基准模型实现 class PopularityRecommender: def __init__(self): self.popular_items None def fit(self, ratings_df): 训练热门推荐模型 self.popular_items ratings_df.groupby(item_id)[rating] \ .mean().sort_values(ascendingFalse).index.values def recommend(self, user_id, n10): 生成推荐 return self.popular_items[:n] # 训练并评估基准模型 pop_model PopularityRecommender() pop_model.fit(ratings_data) popular_recommendations pop_model.recommend(user_id1001, n5)9.3 协同过滤模型训练使用Surprise库实现并比较不同协同过滤算法from surprise import Dataset, Reader, KNNBasic, SVD from surprise.model_selection import cross_validate # 准备数据 reader Reader(rating_scale(1, 5)) data Dataset.load_from_df(ratings_data[[user_id, item_id, rating]], reader) # 比较算法 benchmark [] algorithms [ (KNN-user, KNNBasic(sim_options{user_based: True})), (KNN-item, KNNBasic(sim_options{user_based: False})), (SVD, SVD()) ] for name, algo in algorithms: results cross_validate(algo, data, measures[RMSE], cv3, verboseFalse) benchmark.append((name, results[test_rmse].mean())) # 输出比较结果 print(算法性能比较:) for name, rmse in sorted(benchmark, keylambda x: x[1]): print(f{name:10} RMSE: {rmse:.4f})9.4 混合推荐策略结合协同过滤与内容特征的混合推荐class HybridRecommender: def __init__(self, cf_weight0.7, content_weight0.3): self.cf_weight cf_weight self.content_weight content_weight self.cf_model None self.content_model None def fit(self, cf_model, content_model): 训练混合模型 self.cf_model cf_model self.content_model content_model def recommend(self, user_id, n10): 生成混合推荐 # 获取协同过滤推荐 cf_recs self.cf_model.recommend(user_id, n*2) # 获取内容推荐 content_recs self.content_model.recommend(user_id, n*2) # 合并结果 all_recs {} for item_id, score in cf_recs: all_recs[item_id] score * self.cf_weight for item_id, score in content_recs: if item_id in all_recs: all_recs[item_id] score * self.content_weight else: all_recs[item_id] score * self.content_weight # 返回Top-N推荐 return sorted(all_recs.items(), keylambda x: -x[1])[:n] # 使用示例 hybrid_model HybridRecommender() hybrid_model.fit(cf_model, content_model) hybrid_recommendations hybrid_model.recommend(user_id1001)9.5 线上A/B测试结果我们在生产环境进行了为期4周的A/B测试比较不同算法的实际效果算法类型CTR提升转化率提升平均评分热门推荐基准基准3.8基于用户CF12%8%4.1基于物品CF18%15%4.3混合推荐25%22%4.5结果显示混合推荐策略在各项指标上均表现最佳特别是显著提高了用户的满意度和预订转化率。10. 未来发展方向10.1 跨域推荐利用用户在其他领域的行为数据如餐饮、景点提升民宿推荐技术挑战领域间数据分布差异用户兴趣迁移模式建模解决方案迁移学习知识图谱多任务学习10.2 实时个性化实现秒级更新的个性化推荐技术栈流式计算Flink, Spark Streaming在线学习算法低延迟特征工程10.3 可解释AI增强推荐系统的透明度和可信度解释方法基于规则的解释注意力机制可视化反事实解释10.4 隐私保护在保护用户隐私的前提下实现精准推荐技术方向联邦学习差分隐私同态加密# 差分隐私保护的协同过滤示例 import numpy as np def add_noise(similarity_matrix, epsilon1.0): 添加拉普拉斯噪声实现差分隐私 :param similarity_matrix: 原始相似度矩阵 :param epsilon: 隐私预算 :return: 加噪后的矩阵 sensitivity 2.0 # 敏感度 noise np.random.laplace( loc0, scalesensitivity/epsilon, sizesimilarity_matrix.shape ) return similarity_matrix noise # 应用差分隐私 user_sim calculate_user_similarity(user_item_matrix) private_sim add_noise(user_sim, epsilon0.5)11. 工程实践建议11.1 推荐系统开发流程需求分析明确业务目标确定评估指标识别数据来源原型开发小规模数据验证快速迭代算法建立评估基准系统实现模块化设计性能优化监控体系搭建上线运营A/B测试持续迭代效果分析11.2 常见陷阱与规避数据泄露避免在训练中使用未来信息严格分离训练集和测试集评估偏差离线评估与线上效果可能不一致重视A/B测试结果算法固化定期更新模型监控指标变化多样性缺失避免推荐结果过于集中引入随机性或探索机制11.3 团队协作建议角色分工数据工程师负责数据管道算法工程师模型开发优化后端工程师系统实现部署产品经理需求定义与效果评估协作工具版本控制Git实验管理MLflow项目管理Jira12. 资源与工具推荐12.1 开源工具推荐算法库Surprise经典推荐算法实现LightFM混合矩阵分解TensorFlow Recommenders深度学习推荐系统大数据处理Apache Spark分布式计算Apache Flink流处理特征存储Feast特征服务框架Hopsworks特征仓库12.2 公开数据集民宿相关Airbnb开放数据Tripadvisor数据集通用推荐MovieLens电影评分Amazon Review Data商品评价Yelp Dataset商业评价12.3 学习资源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2436720.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…