Clàr sgaoilidh 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:

  1. Dè a th’ ann an Ionnsachadh Inneal, cò mu dheidhinn a tha e agus na h-amasan aige
  2. 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

An dà liosta air a’ ghraf

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

plota sgapadh air ais le ro-innse

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


Autore