{"adoption": {"forks": 569, "observed_at": "2026-08-28T04:07:52.505103+00:00", "stars": 3258}, "canonical_url": "https://ross.abutalabs.com/products/linear-algebra-made-easy-learn-with-python-and-visualization", "card": {"archived": false, "artifact_type": "learning-resource", "description": "”数学不难“  之  《线性代数不难》上下册，66话题完册；欢迎批评指正", "domain": ["mathematics", "data-science", "machine-learning", "data-visualization", "tutorials"], "enriched": true, "function": ["data-visualization", "math", "machine-learning"], "health_score": 68, "homepage": "https://www.youtube.com/@DrGinger_Jiang", "language": "Jupyter Notebook", "license": null, "license_family": "other", "maturity": "active", "member_repos": ["Visualize-ML/Linear-Algebra-Made-Easy---Learn-with-Python-and-Visualization"], "name": "Visualize-ML/Linear-Algebra-Made-Easy---Learn-with-Python-and-Visualization", "platform": ["python", "cross-platform"], "pushed_at": "2026-05-01T14:43:53+00:00", "repo": "Visualize-ML/Linear-Algebra-Made-Easy---Learn-with-Python-and-Visualization", "stars": 3258, "tags": ["linear-algebra", "jupyter-notebook", "educational", "chinese-language", "visualization"], "topics": ["data-science", "data-visualization", "linear-algebra", "machine-learning", "python", "visualization"], "urls": [], "use_cases": ["learn linear algebra with python visualizations", "understand matrices and vectors for machine learning", "visual explanation of linear algebra concepts", "study linear algebra in chinese", "refresh linear algebra for data science", "jupyter notebook tutorials for linear algebra"], "what_it_is": "An open-source Chinese-language book ('Linear Algebra Is Not Hard') covering 66 topics of linear algebra with Python code and visual illustrations, distributed as Jupyter notebooks. It teaches linear algebra concepts through visualization for data science and machine learning learners.", "when_to_avoid": ["you need a rigorous formal textbook with proofs", "you need English-language material", "you need a maintained software library rather than educational content"], "when_to_choose": ["you want an intuitive, visual introduction to linear algebra", "you prefer learning with runnable Python/Jupyter examples", "you read Chinese and want a free comprehensive linear algebra text"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/linear-algebra-made-easy-learn-with-python-and-visualization", "repo": "Visualize-ML/Linear-Algebra-Made-Easy---Learn-with-Python-and-Visualization", "role": "main", "score": 56}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:52.505103+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:23:14.743962+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", "fetched_at": "2026-08-29T09:36:46.657311+00:00", "kind": "homepage", "missing": false, "url": "https://www.youtube.com/@DrGinger_Jiang"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:52.505103+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:23:14.743962+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", "fetched_at": "2026-08-29T09:36:46.657311+00:00", "kind": "homepage", "missing": false, "url": "https://www.youtube.com/@DrGinger_Jiang"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:23:14.743962+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", "fetched_at": "2026-08-29T09:36:46.657311+00:00", "kind": "homepage", "missing": false, "url": "https://www.youtube.com/@DrGinger_Jiang"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:07:52.505103+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:52.505103+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:52.505103+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:23:14.743962+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", "fetched_at": "2026-08-29T09:36:46.657311+00:00", "kind": "homepage", "missing": false, "url": "https://www.youtube.com/@DrGinger_Jiang"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:52.505103+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:52.505103+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:23:14.743962+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", "fetched_at": "2026-08-29T09:36:46.657311+00:00", "kind": "homepage", "missing": false, "url": "https://www.youtube.com/@DrGinger_Jiang"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:52.505103+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:52.505103+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:52.505103+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:23:14.743962+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", "fetched_at": "2026-08-29T09:36:46.657311+00:00", "kind": "homepage", "missing": false, "url": "https://www.youtube.com/@DrGinger_Jiang"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:52.505103+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:52.505103+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:23:14.743962+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", "fetched_at": "2026-08-29T09:36:46.657311+00:00", "kind": "homepage", "missing": false, "url": "https://www.youtube.com/@DrGinger_Jiang"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:23:14.743962+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", "fetched_at": "2026-08-29T09:36:46.657311+00:00", "kind": "homepage", "missing": false, "url": "https://www.youtube.com/@DrGinger_Jiang"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:23:14.743962+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", "fetched_at": "2026-08-29T09:36:46.657311+00:00", "kind": "homepage", "missing": false, "url": "https://www.youtube.com/@DrGinger_Jiang"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:23:14.743962+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", "fetched_at": "2026-08-29T09:36:46.657311+00:00", "kind": "homepage", "missing": false, "url": "https://www.youtube.com/@DrGinger_Jiang"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 80, "longevity": 39, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "no_license", "no_readme"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 546, "days_push": 124, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 56, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}