{"id":151,"date":"2017-01-22T22:37:23","date_gmt":"2017-01-22T14:37:23","guid":{"rendered":"http:\/\/www.biostarry.com\/?p=151"},"modified":"2017-01-22T22:37:23","modified_gmt":"2017-01-22T14:37:23","slug":"microsoft-infer-net-use1","status":"publish","type":"post","link":"https:\/\/graynekocafe.net\/index.php\/2017\/01\/22\/microsoft-infer-net-use1\/","title":{"rendered":"Microsoft Infer.NET\u4f7f\u7528\u624b\u518c1"},"content":{"rendered":"<p>\t\t\t\t\u6700\u8fd1\u8fd9\u6bb5\u65f6\u95f4\u6c89\u8ff7\u673a\u5668\u5b66\u4e60\uff0c\u795e\u7ecf\u7f51\u7edc\u65e0\u6cd5\u81ea\u62d4\uff0c\u5076\u7136\u53c8\u60f3\u5230\u4e86\u66fe\u7ecf\u627e\u5230\u8fc7\u7684Infer.NET, \u53ef\u4ee5\u88ab\u6211\u4fe1\u4ef0\u7684\u8bed\u8a00&#8211;C#\u53ef\u4ee5\u5b8c\u7f8e\u8c03\u7528\uff0c\u611f\u89c9\u529f\u80fd\u4e5f\u633a\u5f3a\u5927\u7684\uff0c\u4f46\u662f\u7531\u4e8e\u62ff\u5230\u4e00\u4e2aAPI\u7b2c\u4e00\u53cd\u5e94\u80af\u5b9a\u662f\u61f5\u903c:\u201c\u8fd9tm\u90fd\u662f\u4ec0\u4e48\u9b3c\u73a9\u610f\u513f\u201d\uff0c\u201c\u5b98\u65b9\u6559\u7a0b\u5728\u8bf4\u4ec0\u4e48\uff1f\u201d, \u6ca1\u9519\u6211\u4e5f\u662f\u8fd9\u6837\uff0c\u6240\u4ee5\u8fd9\u4e24\u5929\u4e00\u76f4\u5728\u7814\u7a76\uff0c\u867d\u7136\u611f\u89c9\u5fae\u8f6f\u53ef\u80fd\u5df2\u7ecf\u4e0d\u91cd\u89c6\u8fd9\u4e2a\u4e1c\u897f\u4e86\uff0c\u4f46\u4e2a\u4eba\u611f\u89c9\u4f5c\u4e3a\u4e00\u4e2a\u8f83\u4e3a\u8f7b\u91cf\u7ea7\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u529f\u80fd\u4e5f\u7b97\u662f\u5f3a\u5927\u7684\u4e86\uff0c\u4e0d\u8fc7\u5b8c\u5168\u6bd4\u4e0d\u4e0agoogle\u7684tensorflow\u5c31\u662f\u4e86\u3002<\/p>\n<p>\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u8fd8\u662f\u8bb2\u4e00\u4e0bInfer.NET\u7684\u8be6\u7ec6\u7528\u6cd5\uff0c\u770b\u4e0d\u61c2\u5b98\u65b9\u7684\u540c\u5b66\u53ef\u4ee5\u6765\u8fd9\u8fb9\u770b\u4e00\u4e0b\uff0c\u6211\u4eec\u9996\u5148\u8fd8\u662f\u8bb2\u4e00\u4e0b\u8d1d\u53f6\u65af\u5206\u7c7b\u5668\uff0c\u548c\u5b98\u65b9\u6559\u7a0b\u4e2d\u8981\u505a\u7684\u5dee\u4e0d\u591a\uff0c\u4f46\u8fd9\u91cc\u4f1a\u66f4\u8be6\u7ec6\u3002<\/p>\n<p>\u9996\u5148\uff0c\u7b2c\u4e00\u6b65\uff0c\u5728VS 2015\u4e2d\u65b0\u5efa\u4e00\u4e2aC#\u63a7\u5236\u53f0\u9879\u76ee\uff1a<img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-medium wp-image-159\" src=\"http:\/\/graynekocafe.net\/wp-content\/uploads\/2017\/01\/N4RQD5AR3SRYF4PPEH-300x171.png\" alt=\"N4R)&#96;QAR3)SRYF}4PPEH\" width=\"300\" height=\"171\" srcset=\"https:\/\/graynekocafe.net\/wp-content\/uploads\/2017\/01\/N4RQD5AR3SRYF4PPEH-300x171.png 300w, https:\/\/graynekocafe.net\/wp-content\/uploads\/2017\/01\/N4RQD5AR3SRYF4PPEH-1024x585.png 1024w, https:\/\/graynekocafe.net\/wp-content\/uploads\/2017\/01\/N4RQD5AR3SRYF4PPEH-768x439.png 768w, https:\/\/graynekocafe.net\/wp-content\/uploads\/2017\/01\/N4RQD5AR3SRYF4PPEH.png 1388w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>\u7136\u540e\uff0c\u7b2c\u4e8c\u6b65\uff0c\u4e0b\u8f7dInfer.NET,\u5b98\u65b9\u5730\u5740\uff1ahttp:\/\/infernet.azurewebsites.net\/ \uff0c\u5e94\u8be5\u4f1a\u4e0b\u8f7d\u4e0b\u6765\u4e00\u4e2a\u538b\u7f29\u5305\uff0c\u6709\u6e90\u7801\u4e5f\u6709bin\uff0c\u4f46\u5728\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u6211\u4eec\u4e3b\u8981\u4f1a\u7528\u5230\u7684\u5e94\u8be5\u5c31\u662fbin\u91cc\u7684\u4e1c\u897f<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-medium wp-image-152\" src=\"http:\/\/graynekocafe.net\/wp-content\/uploads\/2017\/01\/OQJJ6YXXPDLWRJOY-300x61.png\" alt=\"(OQ~JJ$6YXXPD]LWR~J$O$Y\" width=\"300\" height=\"61\" srcset=\"https:\/\/graynekocafe.net\/wp-content\/uploads\/2017\/01\/OQJJ6YXXPDLWRJOY-300x61.png 300w, https:\/\/graynekocafe.net\/wp-content\/uploads\/2017\/01\/OQJJ6YXXPDLWRJOY-768x157.png 768w, https:\/\/graynekocafe.net\/wp-content\/uploads\/2017\/01\/OQJJ6YXXPDLWRJOY.png 993w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><img decoding=\"async\" class=\"alignnone size-medium wp-image-153\" src=\"http:\/\/graynekocafe.net\/wp-content\/uploads\/2017\/01\/IUTIBQD0UWJI7C1JXPV-300x226.png\" alt=\"[I$UTI)BQD0UWJI7C)1JXPV\" width=\"300\" height=\"226\" srcset=\"https:\/\/graynekocafe.net\/wp-content\/uploads\/2017\/01\/IUTIBQD0UWJI7C1JXPV-300x226.png 300w, https:\/\/graynekocafe.net\/wp-content\/uploads\/2017\/01\/IUTIBQD0UWJI7C1JXPV-768x577.png 768w, https:\/\/graynekocafe.net\/wp-content\/uploads\/2017\/01\/IUTIBQD0UWJI7C1JXPV.png 999w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>\u7136\u540e\uff0c\u5728\u4f60\u7684VS\u91cc\uff0c\u5bfc\u5165\u8fd9\u51e0\u4e2a<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-156\" src=\"http:\/\/graynekocafe.net\/wp-content\/uploads\/2017\/01\/ss1-300x127.jpg\" alt=\"ss1\" width=\"300\" height=\"127\" srcset=\"https:\/\/graynekocafe.net\/wp-content\/uploads\/2017\/01\/ss1-300x127.jpg 300w, https:\/\/graynekocafe.net\/wp-content\/uploads\/2017\/01\/ss1.jpg 647w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>\u7136\u540e\u70b9\u51fb\u201c\u6d4f\u89c8\u201d<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-158\" src=\"http:\/\/graynekocafe.net\/wp-content\/uploads\/2017\/01\/ss3-269x300.jpg\" alt=\"ss3\" width=\"269\" height=\"300\" srcset=\"https:\/\/graynekocafe.net\/wp-content\/uploads\/2017\/01\/ss3-269x300.jpg 269w, https:\/\/graynekocafe.net\/wp-content\/uploads\/2017\/01\/ss3.jpg 382w\" sizes=\"(max-width: 269px) 100vw, 269px\" \/><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-157\" src=\"http:\/\/graynekocafe.net\/wp-content\/uploads\/2017\/01\/ss2-300x164.jpg\" alt=\"ss2\" width=\"300\" height=\"164\" srcset=\"https:\/\/graynekocafe.net\/wp-content\/uploads\/2017\/01\/ss2-300x164.jpg 300w, https:\/\/graynekocafe.net\/wp-content\/uploads\/2017\/01\/ss2-768x419.jpg 768w, https:\/\/graynekocafe.net\/wp-content\/uploads\/2017\/01\/ss2.jpg 921w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>\u4e5f\u5c31\u662f\u8bf4\u5bfc\u5165\u6240\u6709\u9664\u4e86FSharp\u4ee5\u5916\u7684dll\u5e93\u6587\u4ef6\u3002<\/p>\n<p>\uff08\u987a\u5e26\u4e00\u63d0\uff0cNuGet\u7a0b\u5e8f\u5305\u91cc\u4e5f\u6709Infer.NET\uff0c\u4f46\u662f\u90a3\u4e2a\u4e0d\u63d0\u4f9blearners\u7684\u6240\u6709API\uff0c\u6240\u4ee5\u5efa\u8bae\u8fd8\u662f\u4ece\u5b98\u7f51\u4e0b\u8f7d\u624b\u52a8\u5bfc\u5165\uff09<\/p>\n<p>&nbsp;<\/p>\n<p>\u5047\u5982\uff0c\u6559\u80b2\u5c40\u5e0c\u671b\u80fd\u5199\u4e00\u4e2a\u7a0b\u5e8f\uff0c\u901a\u8fc7\u5b66\u751f\u7684\u8bed\u6570\u82f1\u79d1\u56db\u95e8\u6210\u7ee9\u5224\u65ad\u4ed6\u662f\u4e0d\u662f\u4e00\u4e2a\u597d\u5b66\u751f\uff08<del>\u5e94\u8bd5\u6559\u80b2\u5bb3\u4eba\uff0c\u96fe(\uffe3\u25bd\uffe3)&#8221;<\/del>\uff09\uff0c<del>\u4e3a\u4e86\u8ba9\u7956\u56fd\u7684\u82b1\u6735\u88ab\u524a\u7684\u66f4\u72e0\uff0c\u800c\u53c8\u4e0d\u7528\u8d39\u592a\u591a\u529b\u6c14<\/del>\uff0c\u6559\u80b2\u5c40\u51b3\u5b9a\u5b9e\u7528\u4e00\u90e8\u5206\u7684\u6837\u672c\uff08sample\uff09\u5b66\u751f\u7684\u6210\u7ee9\uff08\u4e5f\u5c31\u662f\u7279\u6027\uff0cfeature\uff09\u5148\u7531\u8001\u5e08\u4eec\u5224\u65ad\u4ed6\u662f\u4e0d\u662f\u597d\u5b66\u751f\uff08\u597d\u5b66\u751f\u4e5f\u5c31\u662f\u6807\u7b7e\uff0clabel\uff09\uff0c\u5269\u4e0b\u7684\u4efb\u52a1\u7531\u7a0b\u5e8f\u6765\u5224\u65ad\u662f\u4e0d\u662f\u597d\u5b66\u751f\u3002<\/p>\n<p>\u63a5\u4e0b\u6765\uff0c\u5c31\u8ba9\u6211\u4eec\u5f00\u59cb\u7f16\u5199\u4ee3\u7801\u5427\uff01<\/p>\n<p>\u90a3\u4e48\uff0c\u5f00\u59cb\u54af\uff0c\u5148\u5b9a\u4e49\u4e00\u4e2a\u7c7b\u53eb\u505aStudent\uff0c\u5305\u6db5\u4e24\u4e2a\u5c5e\u6027\uff1a<\/p>\n<p>[code lang=&#8221;CSharp&#8221;]<\/p>\n<p>public string name; \u00a0 \u00a0 \/\/\u5b66\u751f\u7684\u540d\u5b57<br \/>\npublic Vector c_m_s_e; \u00a0 \/\/\u8bed\u6570\u82f1\u79d1\u6210\u7ee9, Vector\u9700\u8981\u5f15\u7528MicrosoftResearch.Infer.Maths\u3002<br \/>\n[\/code]<\/p>\n<p>\u7136\u540e\u6784\u9020\u51fd\u6570\u4e3a\uff1a<\/p>\n<p>[code lang=&#8221;CSharp&#8221;]<br \/>\npublic Student(string Name, Vector FourSubjects)<br \/>\n{<br \/>\nname = Name;<br \/>\nc_m_s_e = FourSubjects;<br \/>\n}<br \/>\n[\/code]<\/p>\n<p>\u518d\u52a0\u4e2a\u5176\u5b9e\u6ca1\u4ec0\u4e48\u610f\u4e49\u7684\u5c0f\u4e1c\u897f\uff1a<\/p>\n<p>[code lang=&#8221;CSharp&#8221;]<br \/>\npublic static Vector getGrades(double chinese, double english, double math, double science)<br \/>\n{<br \/>\nreturn Vector.FromArray(chinese,english,math,science);<br \/>\n}<br \/>\n[\/code]<\/p>\n<p>Student\u7c7b\uff0c\u5b8c\u6210\u3002<\/p>\n<p>\u63a5\u4e0b\u6765\uff0c\u518d\u65b0\u5efa\u4e00\u4e2a\u7c7b\uff0c\u4f5c\u4e3a\u5206\u7c7b\u5668\u7684\u6620\u5c04\uff08mapping\uff09\uff0c\u53eb\u505aStudentClassifier\uff0c\u7136\u540e\u5148\u5f15\u7528\uff1a<\/p>\n<p>[code lang=&#8221;CSharp&#8221;]<br \/>\nusing MicrosoftResearch.Infer.Learners.Mappings;<br \/>\nusing MicrosoftResearch.Infer.Maths;<br \/>\n[\/code]<\/p>\n<p>\u5e76\u8ba9\u8fd9\u4e2a\u7c7b\u5b9e\u73b0 IClassifierMapping\u8fd9\u4e2a\u63a5\u53e3\uff0c\u597d\u4e86\uff0c\u7136\u540e\u5728\u6211\u4eec\u5f00\u59cb\u4e0b\u4e00\u6b65\u4e4b\u524d\uff0c\u6709\u5fc5\u8981\u5148\u4ecb\u7ecd\u4e00\u4e0bIClassifierMapping\uff0c\u8fd9\u53ef\u662f\u91cd\u70b9\u77e5\u8bc6\u54e6<\/p>\n<p>\u9996\u5148\uff0c\u4ecb\u7ecd\u4e00\u4e0b\u8fd9\u4e2a\u63a5\u53e3\u7684\u56db\u4e2a\u6cdb\u578b\u53c2\u6570&lt;in TInstanceSource, TInstance, in TLabelSource, out TLabel, out TFeatures&gt;\uff0c\u9996\u5148\uff0c\u7b2c\u4e00\u4e2a\uff0cinstanceSource\uff0c\u5c31\u662f\u5728\u8bad\u7ec3\u5206\u7c7b\u5668\u662f\u8f93\u5165\u7684\u4e00\u7ec4\u6570\u636e\u7684\u7c7b\u578b\uff0c\u8fd9\u4e2a\u7c7b\u578b\u4ee3\u8868\u4e86\u5206\u7c7b\u5668\u6240\u6709\u7684\u5b9e\u4f8b\u6570\u636e\u6e90\u7684\u7c7b\u578b\uff0c\u4e00\u822c\u6765\u8bf4\u6211\u4eec\u8bad\u7ec3\u4e00\u7ec4\u6570\u636e\u7684\u65f6\u5019\u4f1a\u9009\u62e9\u5c06InstanceSource\u5b9a\u4e49\u4e3a\u4e00\u4e2a\u96c6\u5408\u7c7b\u578b\u7684\u63a5\u53e3\uff0c\u6bd4\u5982IList&lt;T&gt;\uff0c\u6216IEnumerable&lt;T&gt;\uff0c\u56e0\u4e3a\u8fd9\u4e2a\u7c7b\u578b\u4ee3\u8868\u4e86\u6240\u6709\u5b9e\u4f8b\u6570\u636e\u6e90\u7684\u603b\u548c\uff0c\u800cT\u4e00\u822c\u5c31\u662f\u5355\u4e2a\u5b9e\u4f8b\u7684\u7c7b\u578b\uff0c\u90a3\u4e48Instance\u4e5f\u5c31\u53ef\u4ee5\u88ab\u5b9a\u4e49\u4e3aT\uff0c\u5f53\u7136\u4e5f\u53ef\u4ee5\u5c06Instance\u5b9a\u4e49\u4e3a\u4e00\u4e2aint\uff0c\u4f5c\u4e3aInstanceSource\u7684index\u3002\u800c\u540e\u9762\u4e24\u4e2a\uff0cLabelSource\uff0c\u548cLabel\u4e5f\u5c31\u662f\u540c\u6837\u7684\u9053\u7406\u4e86\uff0c\u4ed6\u4eec\u4f5c\u4e3a\u6807\u7b7e\u7684\u7c7b\u578b\uff0c\u4e00\u822c\u4e5f\u5c31\u662fbool(\u4e8c\u9879\u5206\u7c7b)\u6216int\uff0cstring(\u591a\u9879\u5206\u7c7b)\u4e86\uff0c\u8bf4\u660e\u4e00\u4e0b\uff0c\u6807\u7b7e\u5c31\u662f\u5206\u7c7b\u5668\u5c06\u5b9e\u4f8b\u5206\u7c7b\u7684\u7ed3\u679c\uff0c\u5373\u4f7f\u6807\u7b7e\uff0c\u8f93\u5165\u7684\u6807\u7b7e\uff0c\u4e5f\u5c31\u662f\u4f5c\u4e3a\u5206\u7c7b\u7ed3\u679c\u7684\u8bad\u7ec3\u6570\u636e\u54af\u3002\u6700\u540e\u4e00\u4e2a\uff0cfeature\uff0cfeature\u5c31\u662f\u7279\u5f81\uff0c\u5373\u4e3a\u5206\u7c7b\u5668\u5c06instance\u5206\u7c7b\u7684\u6807\u51c6\uff0c\u5206\u7c7b\u7684\u6839\u636e\uff0c\u8fd9\u4e2a\u7269\u4f53\u7684\u7279\u5f81\u66f4\u504f\u5411\u4e0e\u54ea\u4e00\u79cdfeature\uff0c\u4fbf\u5c06\u5176\u5206\u7c7b\u4e3a\u90a3\u4e00\u7c7b\u3002<\/p>\n<p>IClassifierMapping\u4f5c\u4e3a\u8f83\u4e3a\u7b80\u5355\u7684\u4e00\u79cd\u5206\u7c7b\u5668\u6620\u5c04\uff0c\u5b83\u5177\u67094\u4e2a\u9700\u8981\u5b9e\u73b0\u7684\u65b9\u6cd5\uff0c\u8fd9\u56db\u4e2a\u65b9\u6cd5\u7684\u4f5c\u7528\u5c31\u662f\u8ba9\u5206\u7c7b\u5668\u83b7\u53d6\u5b9e\u4f8b\uff0c\u7279\u5f81\uff0c\u4ee5\u53ca\u6807\u7b7e\u7684\u3002\u8fd9\u56db\u4e2a\u65b9\u6cd5\u5206\u522b\u662f\uff1a<\/p>\n<p>[code lang=&#8221;CSharp&#8221;]<br \/>\nIEnumerable&lt;TLabel&gt;; GetClassLabels(TInstanceSource instanceSource = default(TInstanceSource), TLabelSource labelSource = default(TLabelSource));<br \/>\n[\/code]<\/p>\n<p>\u8fd9\u4e2a\u65b9\u6cd5\u7528\u4e8e\u83b7\u53d6\u6807\u7b7e\u7684\u79cd\u7c7b\uff0c\u6bd4\u5982\u6211\u4eec\u8fd9\u91cc\u7ed9\u5b66\u751f\u7684\u6807\u7b7e\u53ea\u6709\u4e24\u7c7b\uff1a\u597d\u5b66\u751f\u548c\u574f\u5b66\u751f\uff0c\u90a3\u7c7b\u578b\u5c31\u662fbool\uff0c\u5373\u8fd4\u56de\u4e00\u4e2abool[]\u6570\u7ec4\uff0c\u5305\u6db5{true,false}\uff0c\u4e0d\u8fc7\u5728\u591a\u9879\u5206\u7c7b\u7684\u5730\u65b9,\u5e94\u8be5\u8fd4\u56de\u4e00\u4e2a\u5b57\u7b26\u4e32\u6216\u6574\u6570\u6570\u7ec4\u3002<\/p>\n<p>[code lang=&#8221;CSharp&#8221;]<br \/>\nTFeatures GetFeatures(TInstance instance, TInstanceSource instanceSource = default(TInstanceSource));<br \/>\n[\/code]<\/p>\n<p>\u8fd9\u4e2a\u65b9\u6cd5\u7528\u4e8e\u4eceinstance\u83b7\u53d6\u7279\u5f81\uff0c\u5728\u8fd9\u91cc\u5fc5\u987b\u5199\u660e\u767d\u5982\u4f55\u624d\u80fd\u8ba9\u5206\u7c7b\u5668\u4eceinstance\u548cinstanceSource\u4e2d\u83b7\u53d6\u7279\u5f81\u8fd9\u4e2a\u5c5e\u6027\uff0c\u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u7ed9\u5b66\u751f\u7684\u7279\u5f81\u53ea\u6709\u56db\u95e8\u6210\u7ee9\u8fd9\u4e2aVector\uff0c\u800c\u5982\u679cinstance\u662f\u5b66\u751f\uff0c\u90a3\u4e48\u53ea\u9700\u8981\u5199return instance.c_m_s_e\u5373\u53ef<\/p>\n<p>[code lang=&#8221;CSharp&#8221;]<br \/>\nIEnumerable&lt;TInstance&gt;; GetInstances(TInstanceSource instanceSource);<br \/>\n[\/code]<\/p>\n<p>\u8fd9\u4e2a\u5012\u662f\u6709\u70b9\u590d\u6742\uff0c\u4e00\u822c\u6765\u8bf4\uff0c\u53ea\u9700\u8981\u8fd4\u56deInstanceSource\u5c31\u53ef\u4ee5\u4e86\uff0c\u4e0d\u8fc7\u5982\u679c\u4f60\u6240\u586b\u5199\u7684InstanceSource\u4e0d\u662f\u4e00\u4e2a\u96c6\u5408\u7c7b\u578b\u6216\u8005instanceSource\u662f\u96c6\u5408\u4f46\u96c6\u5408\u7684\u6cdb\u578b\u53c2\u6570\u4e0eInstance\u4e0d\u4e00\u6837\uff0c\u90a3\u4e48\u5219\u9700\u8981\u81ea\u5bfb\u65b9\u6cd5\u4f7f\u7528yield return\u8bed\u53e5\u5c06\u4f60\u5e0c\u671b\u4f5c\u4e3ainstance\u7684\u6240\u6709\u5143\u7d20\u8fed\u4ee3\u5165\u8fd4\u56de\u503c\u4e2d\u4e86\u3002<\/p>\n<p>[code lang=&#8221;CSharp&#8221;]<br \/>\nTLabel GetLabel(TInstance instance, TInstanceSource instanceSource = default(TInstanceSource), TLabelSource labelSource = default(TLabelSource));<br \/>\n[\/code]<\/p>\n<p>\u8fd9\u4e2a\u65b9\u6cd5\u7528\u4e8e\u901a\u8fc7instance\uff0cinstanceSource\u83b7\u53d6label\uff0c\u4e5f\u5c31\u662f\u5bf9\u5e94\u8fd9\u4e2ainstance\u7684label\uff0c\u6bd4\u5982\u5b66\u751f\u5c31\u662finstance\uff0c\u800c\u4ed6\u7684label\uff08\u597d\u6216\u574f\uff09\u7684\u4f4d\u7f6e\u4e5f\u5c31\u662f\u8f93\u5165\u7684labelSource\u6570\u7ec4\u7684\u4f4d\u7f6e\u3002<\/p>\n<p>\u597d\u4e86\u597d\u4e86\uff0c\u90a3\u4e48\u8fd9\u4e2a\u63a5\u53e3\u4e5f\u5dee\u4e0d\u591a\u8bb2\u5b8c\u4e86\uff0c\u8ba9\u6211\u4eec\u5f00\u59cb\u4e0b\u4e00\u6b65\u5427\u3002<\/p>\n<p>\u8fd9\u4e00\u6b65\uff0c\u6211\u4eec\u5c31\u6765\u73a9&#x2642;\u73a9\u8fd9\u4e2a\u63a5\u53e3\uff0c\u9996\u5148\uff0c\u5b9a\u4e49\u6240\u6709\u6cdb\u578b\u53c2\u6570\uff0c\u7531\u4e8e\u6211\u4eec\u7684\u5b9e\u4f8b\u90fd\u662f\u5b66\u751f\uff0c\u6240\u4ee5\u5728InstanceSource\u8fd9\u4e2a\u6211\u4eec\u80af\u5b9a\u5c06\u5176\u5b9a\u4e49\u4e3aIList&lt;Student&gt;\uff0c\u7136\u540e\u81ea\u7136Instance\u7684\u7c7b\u578b\u5c31\u662fStudent\u4e86\u3002\u63a5\u4e0b\u6765\uff0clabelSource\u548clabel\u7684\u7c7b\u578b\u4e5f\u5982\u6cd5\u70ae\u5236\uff0c\u4e0d\u8fc7\u5bf9\u4e8e\u8fd9\u4e2a\u6211\u4eec\u6ca1\u6709\u5b9a\u4e49\u4ec0\u4e48\u7279\u522b\u7684label\u7c7b\u578b\uff0c\u4e5f\u5b8c\u5168\u4e0d\u9700\u8981\uff0c\u6240\u4ee5\u53ea\u9700\u8981\u5b9a\u4e49\u4e3aIList&lt;bool&gt;\u548cbool\u5c31\u884c\u4e86\uff0c\u4e5f\u5c31\u662f\u8bf4\u8ba9bool\u4f5c\u4e3alabel\u7684\u7c7b\u578b\uff0c\u597d\u5b66\u751f\u5c31\u662ftrue\uff0c\u574f\u5b66\u751f\u5c31\u662ffalse\uff0c\u5f88\u660e\u786e\u5427\u3002\u6700\u540e\uff0cfeature\uff0c\u6211\u4eec\u4f1a\u7528\u5230\u4e00\u4e2a\u6bd4\u8f83\u7279\u522b\u7684\u7c7b\uff0cVector\uff0c\u8fd9\u4e2a\u7c7b\u662f\u4e00\u4e2a\u5f88\u6807\u51c6\u7684\u5411\u91cf\uff0c\u4e5f\u662fInfer.NET\u63d0\u4f9b\u7684\u7c7b\uff0c\u56e0\u6b64\u8fd9\u4e2a\u7c7b\u4e5f\u4f1a\u88ab\u7279\u6b8a\u5bf9\u5f85\uff0c\u4f60\u53ef\u4ee5\u5c06\u8fd9\u91cc\u7684Vector\u7406\u89e3\u4e3a\u4e00\u4e2adouble[]\u6570\u7ec4\uff0c\u4f46\u5176\u5b9e\u5728\u6982\u5ff5\u4e0a\u4e5f\u7a0d\u6709\u4e0d\u540c\uff0c\u4e0d\u8fc7\u4e0d\u5f71\u54cd\uff0c\u53ea\u8981\u5728\u8fd9\u91cc\u586b\u4e0aVector\u5c31\u597d\u4e86\uff0c\u5b83\u53ef\u4ee5\u4ee3\u8868\u56db\u95e8\u79d1\u76ee\u7684\u6210\u7ee9\u3002<\/p>\n<p>\u597d\u4e86\u4e0b\u9762\u5e9f\u8bdd\u4e5f\u4e0d\u7528\u8bf4\u592a\u591a\u4e86\uff0c\u51fd\u6570\u5b9a\u4e49\u5c31\u76f4\u63a5\u653e\u4ee3\u7801\u5e94\u8be5\u4e5f\u90fd\u80fd\u7406\u89e3<\/p>\n<p>[code lang=&#8221;CSharp&#8221;]<br \/>\n    class StudentClassifier : IClassifierMapping&lt;IList&lt;Student&gt;, Student, IList&lt;bool&gt;, bool, Vector&gt;<br \/>\n    {<br \/>\n        public IEnumerable&lt;bool&gt; GetClassLabels(IList&lt;Student&gt; instanceSource = null, IList&lt;bool&gt; labelSource = null)<br \/>\n        {<br \/>\n            return new bool[] { true, false };<br \/>\n        }<\/p>\n<p>        public Vector GetFeatures(Student instance, IList&lt;Student&gt; instanceSource = null)<br \/>\n        {<br \/>\n            return instance.c_m_s_e;<br \/>\n        }<\/p>\n<p>        public IEnumerable&lt;Student&gt; GetInstances(IList&lt;Student&gt; instanceSource)<br \/>\n        {<br \/>\n            return instanceSource;<br \/>\n        }<\/p>\n<p>        public bool GetLabel(Student instance, IList&lt;Student&gt; instanceSource = null, IList&lt;bool&gt; labelSource = null)<br \/>\n        {<br \/>\n            return instance.good;<br \/>\n        }<br \/>\n    }<br \/>\n[\/code]<\/p>\n<p>\u90a3\u4e48\uff0c\u8fd9\u4e9b\u5de5\u4f5c\u5b8c\u6210\u4e4b\u540e\uff0c\u5c31\u662f\u771f\u6b63\u6fc0\u52a8\u4eba\u5fc3\u7684\u65f6\u523b\u4e86\uff0c\u6211\u4eec\u56de\u5230Program\u7c7b\u91cc\uff0c\u5148\u5f15\u7528\u4e00\u4e0b\u9700\u8981\u7684\u547d\u540d\u7a7a\u95f4\uff1a<\/p>\n<p>[code lang=&#8221;CSharp&#8221;]<br \/>\nusing MicrosoftResearch.Infer.Learners;<br \/>\n[\/code]<\/p>\n<p>\u518d\u5728Main\u51fd\u6570\u4e2d\u5b9e\u4f8b\u5316\u6211\u4eec\u7684StudentClassifier \uff1a<\/p>\n<p>[code lang=&#8221;CSharp&#8221;]<br \/>\nStudentClassifier classifier = new StudentClassifier();<br \/>\n[\/code]<\/p>\n<p>\u7136\u540e\u518d\u6765\u5b9e\u4f8b\u5316\u4e00\u53f0\u8d1d\u53f6\u65af(\u88ab\u6211\u5988\u79f0\u4e3a\u201c\u88ab\u564e\u6b7b&#8221;)\u5206\u7c7b\u5668\uff1a<\/p>\n<p>[code lang=&#8221;CSharp&#8221;]<br \/>\nvar classMachine = BayesPointMachineClassifier.CreateBinaryClassifier(classifier);<br \/>\n[\/code]<\/p>\n<p>\u4e4b\u540e\u51c6\u5907\u597d\u9700\u8981\u7684\u6570\u636e<\/p>\n<p>[code lang=&#8221;CSharp&#8221;]<br \/>\nList&lt;Student&gt; students = new List&amp;lt;Student&amp;gt;()<br \/>\n{ new Student(&quot;Derek&quot;,Student.getGrades(70,85,88,66)),<br \/>\nnew Student(&quot;\u8001\u5927&quot;,Student.getGrades(80,85,90,70)),<br \/>\nnew Student(&quot;Edward&quot;,Student.getGrades(83,77,56,47))<br \/>\n};<\/p>\n<p>List&lt;bool&gt; labels = new List&lt;bool&gt;() { true, true, false };<br \/>\n[\/code]<\/p>\n<p>\u7136\u540estudents\u5c31\u662fInstanceSource\uff0clabels\u5c31\u662fLabelSource\uff0c\u90a3\u4e48\u5c31\u8ba9\u6211\u4eec\u5f00\u59cb\u8bad\u7ec3\u5206\u7c7b\u5668\u5427\uff01<\/p>\n<p>[code lang=&#8221;CSharp&#8221;]<br \/>\nclassMachine.Train(students, labels);<br \/>\n[\/code]<\/p>\n<p>\u6ca1\u9519\u5c31\u8fd9\u4e48\u7b80\u5355\u3002\u3002\u3002\u597d\u4e86\u63a5\u4e0b\u6765\u76f4\u63a5\u63a5\u7740\u5f80\u4e0b\u5199\uff0c\u6d4b\u8bd5\u5176\u5728\u7528\u90a3\u4e9b\u6570\u636e\u8bad\u7ec3\u540e\u6839\u636e\u7279\u5f81\u9884\u6d4b\u7684\u80fd\u529b\uff1a<\/p>\n<p>[code lang=&#8221;CSharp&#8221;]<br \/>\nStudent someone = new Student(&quot;somebody&quot;, Student.getGrades(90, 80, 92, 70));<br \/>\nbool isGoodStudent = classMachine.Predict(someone);<br \/>\nSystem.Console.WriteLine(isGoodStudent);<br \/>\n[\/code]<\/p>\n<p>program\u7c7b\u4e2d\u6240\u4ee5\u4ee3\u7801\u5e94\u8be5\u662f\u8fd9\u6837\u7684\uff1a<\/p>\n<p>[code lang=&#8221;CSharp&#8221;]<br \/>\nusing System.Collections.Generic;<br \/>\nusing MicrosoftResearch.Infer.Learners;<br \/>\nnamespace InfernetTutorial<br \/>\n{<br \/>\nclass Program<br \/>\n{<br \/>\nstatic void Main(string[] args)<br \/>\n{<br \/>\nStudentClassifier classifier = new StudentClassifier();<br \/>\nvar classMachine = BayesPointMachineClassifier.CreateBinaryClassifier(classifier);<br \/>\nList&lt;Student&gt; students = new List&amp;lt;Student&amp;gt;()<br \/>\n{ new Student(&quot;Derek&quot;,Student.getGrades(70,85,88,66)),<br \/>\nnew Student(&quot;\u8001\u5927&quot;,Student.getGrades(80,85,90,70)),<br \/>\nnew Student(&quot;Edward&quot;,Student.getGrades(83,77,56,47))<br \/>\n};<\/p>\n<p>List&amp;lt;bool&amp;gt; labels = new List&lt;bool&gt;() { true, true, false };<br \/>\nclassMachine.Train(students, labels);<br \/>\nStudent someone = new Student(&quot;somebody&quot;, Student.getGrades(90, 80, 92, 70));<br \/>\nbool isGoodStudent = classMachine.Predict(someone);<br \/>\nSystem.Console.WriteLine(isGoodStudent);<\/p>\n<p>}<br \/>\n}<br \/>\n}<br \/>\n[\/code]<\/p>\n<p>\u7136\u540e\u5927\u5bb6\u8fd0\u884c\u4e00\u4e0b\uff0c\u770b\u770b\u5206\u7c7b\u5668\u8ba4\u4e3a\u4ed6\u5230\u5e95\u662f\u597d\u5b66\u751f\u8fd8\u662f\u574f\u5b66\u751f\u5427\uff01<\/p>\n<p>P.S.:\u5176\u5b9e\u7ecf\u672c\u4eba\u4eb2\u81ea\u6d4b\u8bd5\uff0c\u8fd9\u91cc\u63d0\u4f9b\u7ed9\u5206\u7c7b\u5668\u7684\u6570\u636e\u5e76\u4e0d\u597d\uff0c\u5927\u5bb6\u53ef\u4ee5\u518d\u5c1d\u8bd5\u5176\u4ed6\u7684\u65b9\u5f0f\u6765\u73a9\u73a9\u8fd9\u4e2a\u4e1c\u897f\u3002\t\t<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6700\u8fd1\u8fd9\u6bb5\u65f6\u95f4\u6c89\u8ff7\u673a\u5668\u5b66\u4e60\uff0c\u795e\u7ecf\u7f51\u7edc\u65e0\u6cd5\u81ea\u62d4\uff0c\u5076\u7136\u53c8\u60f3\u5230\u4e86\u66fe\u7ecf\u627e\u5230\u8fc7\u7684Infer.NET, \u53ef\u4ee5\u88ab\u6211\u4fe1\u4ef0\u7684\u8bed\u8a00&#038;&nbsp;&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-151","post","type-post","status-publish","format-standard","hentry","category-tech_tutorial"],"_links":{"self":[{"href":"https:\/\/graynekocafe.net\/index.php\/wp-json\/wp\/v2\/posts\/151","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/graynekocafe.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/graynekocafe.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/graynekocafe.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/graynekocafe.net\/index.php\/wp-json\/wp\/v2\/comments?post=151"}],"version-history":[{"count":0,"href":"https:\/\/graynekocafe.net\/index.php\/wp-json\/wp\/v2\/posts\/151\/revisions"}],"wp:attachment":[{"href":"https:\/\/graynekocafe.net\/index.php\/wp-json\/wp\/v2\/media?parent=151"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/graynekocafe.net\/index.php\/wp-json\/wp\/v2\/categories?post=151"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/graynekocafe.net\/index.php\/wp-json\/wp\/v2\/tags?post=151"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}