From 998a705b341a9483174a4418f5f7cd62e7e204ab Mon Sep 17 00:00:00 2001 From: Xcreate672 <3534270192@qq.com> Date: Sat, 6 Jun 2026 15:51:33 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=94=B9=E6=88=90=E5=AF=B9=E8=B1=A1?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=20Update=20ignore=5Fusers.json?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 改成对象格式 --- ignore_users.json | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/ignore_users.json b/ignore_users.json index ed695fe839..584595373e 100644 --- a/ignore_users.json +++ b/ignore_users.json @@ -1,5 +1,8 @@ [ - "Haidong Wang", - "donghaiwang", - "whd@hutb.edu.cn" -] \ No newline at end of file + { + "name": "Haidong Wang", + "github": "donghaiwang", + "email": "whd@hutb.edu.cn", + "role": "author" + } +] From 97797c0c66da04312ff80b24a22c7732fdd6253e Mon Sep 17 00:00:00 2001 From: Xcreate672 <3534270192@qq.com> Date: Tue, 9 Jun 2026 15:10:59 +0800 Subject: [PATCH 2/3] =?UTF-8?q?Update=20gaussian=5Fmixture.md=E8=A1=A5?= =?UTF-8?q?=E5=85=85=E9=AB=98=E6=96=AF=E6=B7=B7=E5=90=88=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E5=85=AC=E5=BC=8F=E4=B8=8E=E4=BB=A3=E7=A0=81=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 补充高斯混合模型公式与代码示例 --- docs/gaussian_mixture.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/docs/gaussian_mixture.md b/docs/gaussian_mixture.md index 4f2ea7cbce..5bc0e45fb0 100644 --- a/docs/gaussian_mixture.md +++ b/docs/gaussian_mixture.md @@ -44,3 +44,34 @@ - 异常检测 - 图像分割 - 语音识别 +- +## 数学公式 + +GMM 的概率密度函数为: + +`p(x) = Σ π_k * N(x | μ_k, Σ_k)` + +其中: +- K 为高斯成分数量 +- π_k 为第 k 个成分的混合权重,满足 Σπ_k = 1 +- N(x | μ_k, Σ_k) 为第 k 个高斯分布 + +## 代码示例 + +使用 scikit-learn 拟合高斯混合模型: + +```python +from sklearn.mixture import GaussianMixture +import numpy as np + +# 生成示例数据 +X = np.random.randn(300, 2) + +# 创建并训练模型 +gmm = GaussianMixture(n_components=3, random_state=0) +gmm.fit(X) + +# 预测类别 +labels = gmm.predict(X) +print("各成分权重:", gmm.weights_) +``` From e0823199a5399bd74c26d057a7c5220be0e5064a Mon Sep 17 00:00:00 2001 From: Xcreate672 <3534270192@qq.com> Date: Wed, 10 Jun 2026 16:28:42 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E5=A4=8DPEP8=E8=A7=84=E8=8C=83?= =?UTF-8?q?=EF=BC=8C=E7=BB=9F=E4=B8=80=E6=B3=A8=E9=87=8A=E8=AF=AD=E8=A8=80?= =?UTF-8?q?=E5=B9=B6=E6=B7=BB=E5=8A=A0=E6=A8=A1=E5=9D=97=E8=AF=B4=E6=98=8E?= =?UTF-8?q?=20Update=20contribution=5Fanalysis.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit import 顺序不符合 PEP 8——标准库和第三方库之间缺少空行 缺少模块级 docstring 中英文注释混用——部分注释是中文,部分是英文,不统一 --- contribution_analysis.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/contribution_analysis.py b/contribution_analysis.py index 3bffbba87f..9caa64717c 100644 --- a/contribution_analysis.py +++ b/contribution_analysis.py @@ -1,3 +1,7 @@ +""" +GitHub 贡献分析模块 +通过 GitHub API 统计仓库中各贡献者的提交数量,并导出为 CSV 文件。 +""" import subprocess import argparse import csv @@ -10,7 +14,7 @@ def get_login_by_sha(sha: str, repo: str, token: str, - cache: dict[str, Optional[str]]) -> Optional[str]: + cache: dict[str, Optional[str]]) -> Optional[str]: """Get GitHub login ID by commit SHA with caching. Args: @@ -24,7 +28,6 @@ def get_login_by_sha(sha: str, repo: str, token: str, """ if sha in cache: return cache[sha] - url = f"https://api.github.com/repos/{repo}/commits/{sha}" headers = {"Authorization": f"token {token}"} try: @@ -37,7 +40,7 @@ def get_login_by_sha(sha: str, repo: str, token: str, cache[sha] = login return login except requests.RequestException as e: - print(f"SHA查询异常({sha}): {e}") + print(f"SHA query failed ({sha}): {e}") return None @@ -56,7 +59,7 @@ def load_ignore_users(file_path: str) -> set[str]: with open(file_path, 'r', encoding='utf-8') as f: return {str(u).strip().lower() for u in json.load(f)} except (json.JSONDecodeError, IOError) as e: - print(f"加载屏蔽名单失败: {e}") + print(f"Failed to load ignore list: {e}") return set() @@ -82,15 +85,14 @@ def run_analysis() -> None: result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) if result.returncode != 0: - print("获取Git日志失败") + print("Failed to retrieve Git log") return shas = [s.strip() for s in result.stdout.split('\n') if s.strip()] login_counts: Counter[str] = Counter() sha_to_login_cache: dict[str, Optional[str]] = {} - print(f"检测到 {len(shas)} 个提交,正在追溯归属...") - + print(f"Detected {len(shas)} commits, resolving authors...") for sha in shas: login = get_login_by_sha(sha, args.repo, args.token, sha_to_login_cache) if login and login.lower() not in ignore_set: @@ -102,8 +104,9 @@ def run_analysis() -> None: writer = csv.writer(f) writer.writerow(["GitHub_Login", "Commits"]) writer.writerows(sorted_stats) - print(f"分析完成,导出至 {args.output}") + + print(f"Analysis complete, exported to {args.output}") if __name__ == "__main__": - run_analysis() \ No newline at end of file + run_analysis()