Skip to content

Instantly share code, notes, and snippets.

@brianspiering
Last active January 10, 2022 17:54
Show Gist options
  • Save brianspiering/a7444f66ab15baac1d8c77b673993c63 to your computer and use it in GitHub Desktop.
Save brianspiering/a7444f66ab15baac1d8c77b673993c63 to your computer and use it in GitHub Desktop.
Negative R² example
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "c7f2bf2c",
"metadata": {
"toc": true
},
"source": [
"<h1>Table of Contents<span class=\"tocSkip\"></span></h1>\n",
"<div class=\"toc\"><ul class=\"toc-item\"><li><span><a href=\"#Negative-R²-Example\" data-toc-modified-id=\"Negative-R²-Example-1\">Negative R² Example</a></span></li></ul></div>"
]
},
{
"cell_type": "markdown",
"id": "c32c305e",
"metadata": {},
"source": [
"Negative R² Example\n",
"=========="
]
},
{
"cell_type": "code",
"execution_count": 108,
"id": "82b2e80f",
"metadata": {},
"outputs": [],
"source": [
"reset -fs"
]
},
{
"cell_type": "code",
"execution_count": 109,
"id": "690ad3c4",
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"from sklearn.linear_model import LinearRegression\n",
"from sklearn.metrics import r2_score\n",
"\n",
"palette = \"Dark2\"\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 110,
"id": "cf64b16a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-1.7692307692307683"
]
},
"execution_count": 110,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X = np.linspace(0, 10, 7).reshape(-1, 1)\n",
"y = X+10\n",
"\n",
"lr = LinearRegression(fit_intercept=False) # Constrain intercept to be zero\n",
"lr.fit(X, y)\n",
"y_pred = lr.predict(X)\n",
"r2_score(y, y_pred)"
]
},
{
"cell_type": "code",
"execution_count": 111,
"id": "62e1f803",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Plot outputs\n",
"plt.scatter(X, y, color=\"black\")\n",
"plt.plot(X, y_pred, color=\"blue\", linewidth=3)\n",
"plt.xticks(())\n",
"plt.yticks(())\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "71791314",
"metadata": {},
"source": [
"<br>\n",
"<br> \n",
"<br>\n",
"\n",
"----"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.12"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": false,
"sideBar": false,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": true,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment