应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

吴恩达机器学习练习SVM支持向量机(不存在学不会!)

  这篇文章主要为我们带来了吴恩达机器学习的一个练习:SVM支持向量机,通过本次练习相信你能对机器学习深入更进一步,需要的朋友可以参考下!
  【关注博主,持续分享编程干货】1SupportVectorMachines1。1ExampleDataset1matplotlibinlineimportnumpyasnpimportpandasaspdimportmatplotlib。pyplotaspltimportseabornassbfromscipy。ioimportloadmatfromsklearnimportsvm
  大多数SVM的库会自动帮你添加额外的特征X以及,所以无需手动添加matloadmat(。dataex6data1。mat)print(mat。keys())dictkeys(〔header,version,globals,X,y〕)Xmat〔X〕ymat〔y〕
  defplotData(X,y):plt。figure(figsize(8,5))plt。scatter(X〔:,0〕,X〔:,1〕,cy。flatten(),cmaprainbow)plt。xlabel(X1)plt。ylabel(X2)plt。legend()plotData(X,y)
  defplotBoundary(clf,X):plotdecisionbondaryxmin,xmaxX〔:,0〕。min()1。2,X〔:,0〕。max()1。1ymin,ymaxX〔:,1〕。min()1。1,X〔:,1〕。max()1。1xx,yynp。meshgrid(np。linspace(xmin,xmax,500),np。linspace(ymin,ymax,500))Zclf。predict(np。c〔xx。ravel(),yy。ravel()〕)ZZ。reshape(xx。shape)plt。contour(xx,yy,Z)
  models〔svm。SVC(C,kernellinear)forCin〔1,100〕〕clfs〔model。fit(X,y。ravel())formodelinmodels〕
  title〔SVMDecisionBoundarywithC{}(ExampleDataset1。format(C)forCin〔1,100〕〕formodel,titleinzip(clfs,title):plt。figure(figsize(8,5))plotData(X,y)plotBoundary(model,X)plt。title(title)
  可以从上图看到,当C比较小时模型对误分类的惩罚增大,比较严格,误分类少,间隔比较狭窄。
  当C比较大时模型对误分类的惩罚增大,比较宽松,允许一定的误分类存在,间隔较大。
  1。2SVMwithGaussianKernels
  这部分,使用SVM做非线性分类。我们将使用高斯核函数。
  为了用SVM找出一个非线性的决策边界,我们首先要实现高斯核函数。我可以把高斯核函数想象成一个相似度函数,用来测量一对样本的距离,(x,y)
  这里我们用sklearn自带的svm中的核函数即可。
  1。2。1GaussianKerneldefgaussKernel(x1,x2,sigma):returnnp。exp(((x1x2)2)。sum()(2sigma2))gaussKernel(np。array(〔1,2,1〕),np。array(〔0,4,1〕),2。)0。32465246735834974
  1。2。2ExampleDataset2matloadmat(。dataex6data2。mat)X2mat〔X〕y2mat〔y〕plotData(X2,y2)
  sigma0。1gammanp。power(sigma,2。)2clfsvm。SVC(C1,kernelrbf,gammagamma)modleclf。fit(X2,y2。flatten())plotData(X2,y2)plotBoundary(modle,X2)
  1。2。3ExampleDataset3mat3loadmat(dataex6data3。mat)X3,y3mat3〔X〕,mat3〔y〕Xval,yvalmat3〔Xval〕,mat3〔yval〕plotData(X3,y3)
  Cvalues(0。01,0。03,0。1,0。3,1。,3。,10。,30。)sigmavaluesCvaluesbestpair,bestscore(0,0),0forCinCvalues:forsigmainsigmavalues:gammanp。power(sigma,2。)2modelsvm。SVC(CC,kernelrbf,gammagamma)model。fit(X3,y3。flatten())thisscoremodel。score(Xval,yval)ifthisscorebestscore:bestscorethisscorebestpair(C,sigma)print(bestpair{},bestscore{}。format(bestpair,bestscore))bestpair(1。0,0。1),bestscore0。965
  modelsvm。SVC(C1。,kernelrbf,gammanp。power(。1,2。)2)model。fit(X3,y3。flatten())plotData(X3,y3)plotBoundary(model,X3)
  这我的一个练习画图的,和作业无关,给个画图的参考。importnumpyasnpimportmatplotlib。pyplotaspltfromsklearnimportsvmwecreate40separablepointsnp。random。seed(0)Xnp。array(〔〔3,3〕,〔4,3〕,〔1,1〕〕)Ynp。array(〔1,1,1〕)fitthemodelclfsvm。SVC(kernellinear)clf。fit(X,Y)gettheseparatinghyperplanewclf。coef〔0〕aw〔0〕w〔1〕xxnp。linspace(5,5)yyaxx(clf。intercept〔0〕)w〔1〕plottheparallelstotheseparatinghyperplanethatpassthroughthesupportvectorsbclf。supportvectors〔0〕yydownaxx(b〔1〕ab〔0〕)bclf。supportvectors〔1〕yyupaxx(b〔1〕ab〔0〕)plottheline,thepoints,andthenearestvectorstotheplaneplt。figure(figsize(8,5))plt。plot(xx,yy,k)plt。plot(xx,yydown,k)plt。plot(xx,yyup,k)圈出支持向量plt。scatter(clf。supportvectors〔:,0〕,clf。supportvectors〔:,1〕,s150,facecolorsnone,edgecolorsk,linewidths1。5)plt。scatter(X〔:,0〕,X〔:,1〕,cY,cmapplt。cm。rainbow)plt。axis(tight)plt。show()print(clf。decisionfunction(X))
  〔1。1。51。〕
  2SpamClassification2。1PreprocessingEmails
  这部分用SVM建立一个垃圾邮件分类器。你需要将每个email变成一个n维的特征向量,这个分类器将判断给定一个邮件x是垃圾邮件(y1)或不是垃圾邮件(y0)。
  takealookatexamplesfromthedataset
  withopen(dataemailSample1。txt,r)asf:emailf。read()print(email)
  Anyoneknowshowmuchitcoststohostawebportal?Well,itdependsonhowmanyvisitorsyoureexpecting。Thiscanbeanywherefromlessthan10bucksamonthtoacoupleof100。Youshouldcheckouthttp:www。rackspace。comorperhapsAmazonEC2ifyourerunningsomethingbig。。Tounsubscribeyourselffromthismailinglist,sendanemailto:groupnameunsubscribeegroups。com
  可以看到,邮件内容包含aURL,anemailaddress(attheend),numbers,anddollaramounts。很多邮件都会包含这些元素,但是每封邮件的具体内容可能会不一样。因此,处理邮件经常采用的方法是标准化这些数据,把所有URL当作一样,所有数字看作一样。
  例如,我们用唯一的一个字符串‘httpaddr来替换所有的URL,来表示邮件包含URL,而不要求具体的URL内容。这通常会提高垃圾邮件分类器的性能,因为垃圾邮件发送者通常会随机化URL,因此在新的垃圾邮件中再次看到任何特定URL的几率非常小。
  我们可以做如下处理:1。Lowercasing:把整封邮件转化为小写。2。StrippingHTML:移除所有HTML标签,只保留内容。3。NormalizingURLs:将所有的URL替换为字符串httpaddr。4。NormalizingEmailAddresses:所有的地址替换为emailaddr5。NormalizingDollars:所有dollar符号()替换为dollar。6。NormalizingNumbers:所有数字替换为number7。WordStemming(词干提取):将所有单词还原为词源。例如,discount,discounts,discountedanddiscounting都替换为discount。8。Removalofnonwords:移除所有非文字类型,所有的空格(tabs,newlines,spaces)调整为一个空格。
  matplotlibinlineimportnumpyasnpimportmatplotlib。pyplotaspltfromscipy。ioimportloadmatfromsklearnimportsvmimportreregularexpressionforemailprocessing这是一个可用的英文分词算法(Porterstemmer)fromstemming。porter2importstem这个英文算法似乎更符合作业里面所用的代码,与上面效果差不多importnltk,nltk。stem。porter
  defprocessEmail(email):做出了WordStemming和Removalofnonwords的所有处理emailemail。lower()emailre。sub(〔〕,,email)匹配开头,然后所有不是,的内容,直到结尾,相当于匹配。。。emailre。sub((httphttps):〔s〕,httpaddr,email)匹配后面不是空白字符的内容,遇到空白字符则停止emailre。sub(〔s〕〔s〕,emailaddr,email)emailre。sub(〔〕,dollar,email)emailre。sub(〔d〕,number,email)returnemail
  接下来就是提取词干,以及去除非字符内容。defemail2TokenList(email):预处理数据,返回一个干净的单词列表IllusetheNLTKstemmerbecauseitmoreaccuratelyduplicatestheperformanceoftheOCTAVEimplementationintheassignmentstemmernltk。stem。porter。PorterStemmer()emailpreProcess(email)将邮件分割为单个单词,re。split()可以设置多种分隔符tokensre。split(〔。:〔〕?!(){},gt;lt;;〕,email)遍历每个分割出来的内容tokenlist〔〕fortokenintokens:删除任何非字母数字的字符tokenre。sub(〔azAZ09〕,,token);UsethePorterstemmerto提取词根stemmedstemmer。stem(token)去除空字符串‘,里面不含任何字符ifnotlen(token):continuetokenlist。append(stemmed)returntokenlist
  2。1。1VocabularyList(词汇表)
  在对邮件进行预处理之后,我们有一个处理后的单词列表。下一步是选择我们想在分类器中使用哪些词,我们需要去除哪些词。
  我们有一个词汇表vocab。txt,里面存储了在实际中经常使用的单词,共1899个。
  我们要算出处理后的email中含有多少vocab。txt中的单词,并返回在vocab。txt中的index,这就我们想要的训练单词的索引。defemail2VocabIndices(email,vocab):提取存在单词的索引tokenemail2TokenList(email)index〔iforiinrange(len(vocab))ifvocab〔i〕intoken〕returnindex
  2。2ExtractingFeaturesfromEmailsdefemail2FeatureVector(email):将email转化为词向量,n是vocab的长度。存在单词的相应位置的值置为1,其余为0dfpd。readtable(datavocab。txt,names〔words〕)vocabdf。asmatrix()returnarrayvectornp。zeros(len(vocab))initvectorvocabindicesemail2VocabIndices(email,vocab)返回含有单词的索引将有单词的索引置为1foriinvocabindices:vector〔i〕1returnvector
  vectoremail2FeatureVector(email)print(lengthofvector{}numofnonzero{}。format(len(vector),int(vector。sum())))lengthofvector1899numofnonzero45
  2。3TrainingSVMforSpamClassification
  读取已经训提取好的特征向量以及相应的标签。分训练集和测试集。Trainingsetmat1loadmat(dataspamTrain。mat)X,ymat1〔X〕,mat1〔y〕Testsetmat2scipy。io。loadmat(dataspamTest。mat)Xtest,ytestmat2〔Xtest〕,mat2〔ytest〕
  clfsvm。SVC(C0。1,kernellinear)clf。fit(X,y)
  2。4TopPredictorsforSpampredTrainclf。score(X,y)predTestclf。score(Xtest,ytest)predTrain,predTest(0。99825,0。989)
  到此这篇关于机器学习SVM支持向量机的练习文章就介绍到这了,更多相关机器学习内容请关注博主或继续浏览下面的相关文章,希望大家以后多多支持!

想瘦,那你就早点睡觉晚睡会让人越来越胖想瘦,那你就早点睡觉。晚睡会让人越来越胖,睡得晚不符合于养肝的规律,体内的素素分辨也会减少。从而导致人会越来越胖,那么晚睡对人体还有哪些损伤呢?这是个知识点,圈个有用。晚睡易肥……惨!拼多多在美股暴跌30,一夜之间没了1400亿人民币惨!拼多多在美股暴跌30!一夜之间没了1400亿人民币!近日,拼多多在美股暴跌30,成为所有中概股的跌幅最大公司,哪怕是在3月份那次低迷的行情中,拼多多最大的……柳传志的造不如买和任正非坚持自主研发谁对?联想柳传志的造不如买那是小人物心态,省去了研发经费还不一定出产品的后果,只是买美国核心产品再加工然后卖出去赚利润。看似很好,其实结果一般,全套加工流程器件组装到后期市场开发,出……集美新材2023春夏色彩元界探潜SSCOLORS元界探潜2023SS受夏日度假与环保时尚的影响灵感源自海洋的色盘备受关注伴随元宇宙和Web3。0在后疫情时代的流行高饱和的虚……非洲美食蚊子饼50万只蚊子煎成饼,一口下肚10万只蚊子一张饼由50万只蚊子做成,一口咬下去,就让10万只蚊子下了肚,这就是非洲人的美食,你敢吃吗?如果你去非洲旅游,那么你会看到一种闻起来香喷喷、看起来像巧克力饼干一样的食物,……走光龅牙爆冷门,香港小姐再竞选三甲出炉,能不能别搞了?tvb对于选美这件事真的太执着了,上个月《2022香港小姐竞选》(也就是我们熟悉的香港小姐竞选)才刚刚落下帷幕,他们又准备搞一个《香港小姐再竞选》的节目。然后就在今天《香……空腹血糖在7。28。4之间,是糖尿病吗?听听医生咋说?吃糖时幸福感高,但是不要血糖升高。糖尿病是全世界存在的一种非常难以治愈的疾病,而且潜伏时间较长,也是一种医学临床当中很常见的疾病,在早期非常不易发现,所以糖尿病又被称为富……20!巴黎踢疯了,2大巨星梦幻表演,姆巴佩获顶级助力,剑指欧巴黎进行了本赛季首场比赛,对阵奎维利鲁昂,最终以20的比分获胜。此役,巴黎在上半场第34分钟打破僵局,下半场再进1球,锁定胜局。这场较量,出现足坛罕见一幕,梅西制造点球,拉莫斯……iQOO10真机曝光?搭载了v1拍照芯片?iQOO10真机曝光,配置也很详细,摄像头部分有v1芯片的标志,简单看看吧。手机确定使用三星gn5主摄,这是一款5000万像素的主摄,看起来v1芯片的标志很明显,这就是告……上了60岁不能喝酒?行家纯属胡扯!牢记这3点,放心喝导语:上了60岁不能喝酒?行家:纯属胡扯!牢记这3点,放心喝有的人从年轻的时候就喜欢喝酒,上了年纪一天也不能断,一天不喝总感觉缺点什么,其实人到60岁,上了年纪,不是不能……回娘家吃饭老妈做了9菜1汤晒圈火了,网友看饿了,想去你家蹭饭有一段时间没有回娘家了,昨天给母亲打电话,母亲就让我今天一家三口回家去吃饭。下班后一家三口回到娘家,母亲已经提前张罗,忙乎了一天,准备各种我们爱吃的菜肴,虽然都是一些简单的家常……建议女性朋友多吃这4种蔬菜,叶酸含量高,常吃面色红润气色好春天,气温慢慢回暖,户外活动也多了起来。比起冬藏,春天是阳气升发的季节,适合补养激发体内的阳气,这个时候,除了适当的运动,不妨多吃一些叶酸含量高的食物,不仅有补气血,增强免疫力……
有了好机身没有好镜头等于白花钱值得入手的几款索尼微单镜头现在,很多小伙伴都购买了自己观望很久的微单,有些买了佳能微单,有些买了松下微单,还有些买了尼康微单,而更多的小伙伴则选择了索尼微单。很多小伙伴之所以选择索尼微单,主要是这……凯尔特人的奋战与卢卡的魔术下,上届东西部冠军同日倒塌上季的东西部冠军,前后脚被淘汰。晋级的是24岁的塔图姆和23岁的卢卡,前天还提过,年轻一代的卓越代表。但太阳被达拉斯淘汰这场,实在过于诡异相比起来,隔壁凯尔特人切割……大胆预测4月是属于vivo的,各种机型让你挑花眼小米12系列发布、RedmiK50系列即将发布;荣耀Magic4系列即将发布;一加10Pro发布、OPPOFindX5系列发布。大家发现没有在所有的大品牌之中唯独vivo在20……315晚会又要来啦又是一年315,作为消费者的大家一定非常关心今年晚会上又会有哪些企业被曝光,哪些不合理的消费现象被曝光。其实看看过去一年的新闻就知道,去年依旧有许多知名大品牌出现过坑害消费者的……15!中国女足遭遇惨败,不敌美国男足俱乐部的青年队当地时间8月8日,正在美国进行拉练的中国女足,迎来了他们的第4个对手,DLEB的U17男足。最终,在这场跨性别的热身赛当中,铿锵玫瑰以15的比分,收获了赴美拉练的首场败战。……这事触动日本神经西方企业有充分理由留在俄罗斯,俄罗斯《观点报》8日发表文章称,俄罗斯对不友好国家实施反制裁。来自多个国家的大公司将无法退出其在俄罗斯持有的资产,这主要适用于银行和石油、天然气领……来,给八级房整个活儿!这些未加入游戏坦克谁才是真硬茬?各位车长大家好!常言道,工欲善其事,必先利其器,对于需要在前线抗压挨揍的重坦而言,装甲就是它们能充分发挥的基础。正巧,最近在超测服里出现的8金战车,绝大多数都是以防护见长……配色新玩法!三星折叠屏新机采用多色拼接配色达71种【手机中国新闻】按照此前消息,三星将于8月10日晚上举办GalaxyUnpacked2022新机发布会,届时三星将推出新款折叠屏机型ZFlip4和ZFold4,在发布会召开之前……7月造车新势力新能源车企销量排名TOP5刚进入8月,国内造车新势力蔚小理等新能源车企陆续公布了7月销量成绩单,在高油价及新能源汽车产业景气度持续高企的背景推动下,7月份新能源汽车的销量继续走高,但有点意外的是,造车新……七夕送什么礼物,七夕送女朋友礼物推荐七夕是一个仪式感满满的节日,情侣都开始互赠礼物啦女生在七夕那天收到礼物会很惊喜的,鲜花是必备的啦除了鲜花外肯定还需要一点小礼物,但是怎么样才能送到女朋友心坎上呢?大家可得好好学……苹果要出折叠屏?可能不是手机哦关于苹果要出折叠屏设备的消息是越来越多,主要还是因为现在厂商不断折叠屏市场,让大家很是好奇苹果何时会加入折叠屏赛道中,毕竟可折叠iPhone早已成为公开的秘密,时不时就会出来刷……波耶特莫德里奇是我带过的球员中最出色的直播吧4月5日讯此前在上海申花有过执教经历的乌拉圭教头波耶特近日接受采访时表示,莫德里奇是自己带过的球员中最出色的一位。波耶特曾在20072008年短暂担任过热刺助教,彼……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网