Eisimpleir Ionnsachadh Inneal le Python: Simple Linear Regression
Anns an eisimpleir seo de ionnsachadh innealan chì sinn ais-thionndadh sreathach le aon fheart cuir a-steach. Tionndadh loidhneach sìmplidh.
Mus lean thu air adhart, tha mi a’ moladh dhut dà artaigil ghoirid a leughadh, far am faigh thu diofar mhìneachaidhean:
- Dè a th’ ann an Ionnsachadh Inneal, cò mu dheidhinn a tha e agus na h-amasan aige
- Seòrsaichean Ionnsachadh Inneal
Leis gum bi sinn ga chleachdadh Python, mura h-eil e agad air a’ PC agad fhathast, leugh cuideachd Mar a stàlaicheas tu Python air Microsoft Windows
Mar eisimpleir, leig dhuinn beachdachadh air dà liosta Python: tha a’ chiad fhear a’ riochdachadh luachan cuir a-steach (feart), an dàrna fear na luachan toraidh (targaid).
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [28, 26, 35, 21, 33, 35, 41, 44, 42, 51]
Faodar an dà liosta seo a riochdachadh air clàr dotagan sgapaidh
Bhon ghraf chì sinn gu bheil cuairteachadh cha mhòr sreathach aig na puingean, ged nach eil iad air an aon loidhne, bhon phuing gu h-ìosal air an taobh chlì chun a’ phuing gu h-àrd air an làimh dheis. Faodar cuairteachadh nam puingean air a’ ghraf a chomharrachadh mar ghluasad nan liostaichean a tha mar bhunait don mhodail air am bi an inneal ionnsachaidh fèin-ghluasadach againn stèidhichte.
Modail
Mar sin faodaidh sinn a ràdh ma tha an X fàs, eadhon an Y bidh e a’ fàs, mar gum biodh na puingean timcheall loidhne mac-meanmnach. Is e amas an ath-thionndaidh an loidhne seo, an loidhne dhìreach seo a chomharrachadh. Chuidicheadh comharrachadh na loidhne seo sinn gus na puingean Y a chomharrachadh airson luachan X nach eil an làthair san liosta.
Gu dearbh, is dòcha gum faighnich sinn dhuinn fhìn ciamar a nì sinn ro-innse air luach Y airson X nach eil air a ghabhail a-steach anns na cùisean, nach eil air a ghabhail a-steach san dà liosta? Gu bunaiteach, dè an luach a bhiodh air Y nam b’ fhiach X 11, no 12, neo 13?
Bidh ais-tharraing sreathach a’ tomhas na loidhne as fheàrr a tha a’ dèanamh tuairmse air na puingean, is e sin, an loidhne a tha a’ dol eadar na puingean, a’ lughdachadh an astair bho gach aon dhiubh. Agus leis gun toir ais-tharraing sìmplidh loidhne dhìreach dhuinn, tha e follaiseach nach bi an ro-aithris cho ceart, ach bidh e comasach dhuinn fhathast ìre so-chreidsinneach a thomhas, gu math faisg air Y.
Dèanamaid e le scikit-learn:
# bidh sinn a’ toirt a-steach am modal ais-tharraing sreathach bho scikit-learn
import numpy mar np
bho sklearn.linear_model import LinearRegression
# cuiridh sinn am modail sa bhad
model = Tilleadh loidhneach ()
# bidh sinn a’ tòiseachadh nan luachan a dh’ fheumas sinn gus an inneal a stiùireadh
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [28, 26, 35, 21, 33, 35, 41, 44, 42, 51]
# bidh sinn a’ structaradh an dàta ann an cruth dà-thaobhach
X = np.array (x) .reshape (-1,1)
# bidh sinn a’ trèanadh a’ mhodail
modail.fit (X, y)
An toradh a gheibhear bhon chòd Python a tha modail ionnsaichte. Chaidh an rud modail a chuir an sàs sa bhad leis a’ chlas ais-tharraing sreathach, agus às deidh dha a bhith ag iarraidh a’ mhodail iomchaidh, tha am modail air an dàta a sgrùdadh agus tha e deiseil airson ro-innse a dhèanamh.
An ro-aithris
Gus an ro-innse a bhith againn feumaidh sinn an dòigh ro-innse a chleachdadh, air a bheil uallach airson suidheachaidhean san àm ri teachd a ro-innse. Cuiridh sinn an sreath ris
clò-bhualadh (model.predict ([[11], [12], [13], [14]]))))
a’ tòiseachadh air a’ phrògram a-rithist, gheibh sinn na ceithir luachan a thathar an dùil a fhreagras air feartan 11, 12, 13 agus 14:
[49.8 52.38181818 54.96363636 57.54545455]
Mar sin is iad na ceithir luachan a gheibhear ann an litrichean:
- 11 -> 49.8
- 12 -> 52.38181818
- 13 -> 54.96363636
- 14 -> 57.54545455
Mar a chì sinn, tha luachan àrdachadh X a 'freagairt ri luachan àrdachadh Y, agus tha seo a' dèanamh ciall. Feuchaidh sinn ri faicinn dè thachras air a’ ghraf
Tha an loidhne dhearg a’ riochdachadh toradh an ais-tharraing. Tha e coltach gur e an loidhne mìneachadh geoimeatrach, agus gu sònraichte sreathach, air cuairteachadh phuingean. Gu bunaiteach tha e coltach ri bhith ag ràdh gur e modail sìmplidh agus sreathach a th’ anns a’ mhodail a chaidh a thaghadh gus an ro-aithris àrdachadh.
Faodaidh sinn a ràdh nach eil an ro-aithris gu math ceart, ach is e mìneachadh a th ’ann.
Mar a nì thu measadh air na toraidhean
Aon uair ‘s gu bheil na toraidhean ro-innse air fhaighinn, bidh e cudromach fios a bhith agad an-còmhnaidh mar a nì thu measadh air èifeachdas modail. Gus seo a dhèanamh feumaidh sinn na slatan-tomhais sin fhaicinn scikit-ionnsaich ri fhaighinn sa phasgan sklearn.metrics.
Tha na meatrach stèidhichte air bun-bheachd a’ chòrr, i.e. dè cho fada ‘s a tha an loidhne a’ gluasad bho fhìor luach y airson x ainmichte. Gu practaigeach airson gach puing an astar bho loidhne dhìreach a’ phuing fhèin.
Is urrainn dhuinn na tha air fhàgail obrachadh a-mach le bhith a’ cunntadh an eadar-dhealachaidh eadar an fhìor luach agus an luach a thathar a’ sùileachadh, is urrainn dhuinn a dhèanamh airson feartan 1 gu 10:
# dèan ro-innse airson x luachan bho 1 gu 10
y_pred = model.predict (X)
clò-bhualadh (y_pred)
# obraich a-mach na tha air fhàgail
fuigheall = y - y_pred
clò-bhualadh (fuigheall)
mar thoradh air an sin gheibh mi na fàisneachdan
[23.98181818 26.56363636 29.14545455 31.72727273 34.30909091 36.89090909 39.47272727 42.05454545 44.63636364]
agus fuigheall
[4.01818182 -0.56363636 5.85454545 -10.72727273 -1.30909091 -1.89090909 1.52727273 1.94545455 -2.63636364]
Bidh gach aon de na luachan sin a’ tomhas dè cho fada ‘s a tha an loidhne air a dhol seachad bhon phuing sa ghraf. Canar na puingean le barrachd fuigheall a-muigh, is e sin, na luachan co-cheangailte ris a’ ghluasad choitcheann (mar eisimpleir an ràithe -10.72). Is e an dàrna luach -0.56 agus mar sin gu mòr a rèir a’ ghluasaid choitcheann.
Na Metrics
Airson ais-tharraing sreathach tha metrics fìor chudromach a bhios scikit-learn rim faighinn, chì sinn cuid dhiubh:
- Mearachd iomlan cuibheasach: a’ toirt a-steach cuibheasachd luachan iomlan nan fuigheall. Gu bun-bheachdail bidh e a’ tomhas astar gach puing bhon loidhne. Simple agus concrait, tha e air a thomhas le luachan iomlan oir tha e a 'tomhas an astair agus chan e an suidheachadh os cionn no fon loidhne. A bharrachd air an sin, tha an luach iomlan a’ toirt dearbhadh dhuinn nach bi luachan eile a’ cuir dheth a chèile. Faodaidh luach MAE a bhith nas motha na no co-ionann ri neoni, agus mar as fhaisge a tha e air neoni, ’s ann as fheàrr a tha an ro-aithris;
- Mearachd ceàrnagach cuibheasach: a’ toirt a-steach cuibheasachd nan ceàrnagan de luachan iomlan nan fuigheall, leithid am MAE ach na ceàrnagan. Tha luach MSE nas motha na no co-ionann ri neoni, agus mar as fhaisge a tha e air neoni, ’s ann as fheàrr a tha an ro-innse;
- Ceàrnag R: beagan nas iom-fhillte na an fheadhainn a bh ’ann roimhe, ach faodaidh sinn a ràdh gu bheil e a’ buntainn ris na mearachdan a chaidh a dhèanamh rè na h-ìre ro-innse leis an eadar-dhealachadh san dàta fhèin. Tha luach ceàrnagach R an-còmhnaidh nas lugha na no co-ionann ri 1, le comas air luachan àicheil a bhith ann. Ma tha ceàrnag R co-ionann ri 1 tha e a 'ciallachadh gu bheil am modail a' mìneachadh a 'ghluasaid gu math, aig neoni tha an coileanadh neodrach. Ma tha luach àicheil aig ceàrnag R, tha e a’ ciallachadh nach do rinn am modail gu math.
Is iad na gnìomhan scikit-learn a chuireas ris na trì comharran:
- mean_iomlan_mearachd gach MFA
- mean_ceàrnagach_mearachd gach MSE
- r2_sgòr gach R ceàrnagach
gan cur ris an eisimpleir againn gheibh sinn na luachan a leanas:
MAE = 3.4254545454545466
MSE = 19.847272727272724
R2 = 0.7348039453865216
bho sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
clò-bhualadh (mean_absolute_error (y, y_pred))
clò-bhualadh (mean_squared_error (y, y_pred))
clò-bhualadh (r2_score (y, y_pred))
Ercole Palmeri: Ùr-ghnàthachadh tràilleach