近每天都带一个苹果加餐,有次吃到一个十分漂亮的红苹果,突然觉得,可以试着画一个苹果看看。
之前确实无法想象,可以使用CSS能画出一个苹果。
先看效果:
你没有看错,这个不是真苹果。仅仅一百多行代码就可以实现的CSS的红苹果。我自己看到最终效果都惊呆了。
第一步画出苹果的轮廓:
.apple {
position: relative;
width: 300px;
height: 270px;
background-color: #bf2934;
border-radius: 160px 150px 145px 150px/160px 140px 210px 190px;
}
第二步:将苹果变得更加立体
1)右上角使用亮色内阴影,画出高光效果
2)左下角使用两层暗色内阴影,画出背光的暗色效果
3)左上角增加一个亮色高光
4)整体增加径向渐变的背景,将重心高光,四周暗色
.apple {
position: relative;
width: 300px;
height: 270px;
background: radial-gradient(#0000, rgba(0, 0, 0, .1)),
radial-gradient(rgba(239, 156, 109, .2), #0000);
background-color: #bf2934;
border-radius: 160px 150px 145px 150px/160px 140px 210px 190px;
box-shadow: inset 30px -20px 30px 20px rgba(0, 0, 0, .15),
inset 10px -10px 15px 0 rgba(0, 0, 0, .15),
inset 10px 10px 5px 0 rgba(255, 255, 255, .05),
inset -10px 10px 30px 10px rgba(237, 115, 84, .3);
}
第三步:增加光源反光的高亮效果
使用before伪元素,画一个亮色的椭圆。橘色的阴影。然后整体模糊一下
.apple::before {
position: absolute;
left: 135px;
top: 50px;
content: '';
width: 80px;
height: 30px;
transform: skew(-20deg) rotate(10deg);
border-radius: 45%;
background: rgba(255, 255, 255, .65);
box-shadow: 2px 10px 30px 22px rgba(239, 156, 109, 1);
filter: blur(5px);
}
哇,一不小心,画出来了一个西红柿
好吧,这个时候, 我其实可以停下来,先发一篇画西红柿的文章了。
第四步:准备一下顶部叶柄的凹陷
这个凹陷效果使用after伪元素,画一个黑色透明色渐变的椭圆,然后使用clip-path,截取顶部扇形部分。
.apple::after {
position: absolute;
left: 90px;
top: 2px;
width: 120px;
background: radial-gradient(rgba(0, 0, 0, .3), rgba(239, 156, 109, .2));
height: 30px;
content: '';
border-radius: 50%;
filter: blur(2px);
clip-path: polygon(50% 55%, 150% 0, -50% 0);
filter: blur(1px);
}
真是一个漂亮的西红柿。。。。。。。
苹果和西红柿的区别,主要是,苹果没有那么的光滑,颜色没有这么完美。我们需要一些杂色。
第五步:增加杂色条纹
好吃的苹果,都有纵向的条纹杂色。这里我们是模糊后的border来模拟。由于需要很多杂色,这里使用js添加,稍微做点随机。
.stripe {
position: absolute;
width: 300px;
height: 270px;
border-radius: 160px 150px 145px 150px/160px 140px 210px 190px;
border-right: solid 2px rgba(239, 156, 109, .2);
transform: scaleX(.9);
filter: blur(4px);
}
function addStripe() {
var fragment=document.createDocumentFragment()
var count=15
for (var i=-count; i < count; i++) {
var stripe=document.createElement('div')
stripe.className='stripe'
stripe.style.opacity=Math.max(1, 0.5 + Math.random())
stripe.style.transform=`scaleX(${(i / count + Math.random() * 0.2).toFixed(2)})`
fragment.appendChild(stripe)
}
document.querySelector('.apple').appendChild(fragment)
}
是不是突然就像苹果了
第六步:增加噪点
好吃的苹果,会有很多小小的斑点。这里,我们使用js增加一些随机的斑点。
.spot {
position: absolute;
width: 4px;
height: 4px;
border-radius: 50%;
background: rgba(239, 156, 109, .6);
filter: blur(1px);
}
function addSpot() {
var count=60
var fragment=document.createDocumentFragment()
for (var i=0; i < count; i++) {
var spot=document.createElement('div')
spot.className='spot'
spot.style.left=5 + ~~(Math.random() * 90) + '%'
spot.style.top=5 + ~~(Math.random() * 90) + '%'
spot.style.opacity=0.2 + Math.random() * 0.4
spot.style.transform=`scaleX(${Math.random() * 0.8 + 0.2}) scaleY(${Math.random() * 0.8 + 0.2}) rotate(${~~(360 * Math.random())}deg)`
fragment.appendChild(spot)
}
document.querySelector('.apple').appendChild(fragment)
}
苹果变得更加诱人了。
再做一些细节优化。
第七部:给苹果加个叶柄。
买过西瓜的都知道,叶柄是证明西瓜新鲜与否的标志。苹果亦然。
.petiole {
position: absolute;
transform: translate(155px, -48px) rotate(35deg);
width: 20px;
height: 60px;
border-top: solid 15px transparent;
border-left: solid 10px rgb(162, 76, 9);
border-bottom: solid 8px transparent;
border-radius: 50%;
}
.petiole.left {
transform: translate(154px, -49px) rotate(35deg);
border-left-color: rgb(123, 48, 24);
}
<div class="apple">
<div class="petiole left"></div>
<div class="petiole"></div>
</div>
是不是新鲜很多。
最后,我们给苹果加个阴影,看着更加立体一点。
.shadow {
position: absolute;
width: 300px;
height: 270px;
background-color: rgba(0, 0, 0, .15);
transform-origin: 50% 100%;
transform: translate(5px, 5px) skew(60deg) scaleY(.25);
border-radius: 160px 150px 145px 150px/160px 140px 210px 190px;
box-shadow: 0 0 20px rgba(0, 0, 0, .15);
filter: blur(4px);
}
娇艳欲滴的大苹果,完成!!!!
代码仓库地址:
https://github.com/shb190802/html5
演示地址:
http://suohb.com/demo/win/apple.html
文标题:How to Generate Test Datasets in Python with Scikit-learn
作者:Jason Brownlee
翻译:笪洁琼
校对:顾佳妮
本文共1754字,建议阅读3分钟。
本文教大家在测试数据集中发现问题以及在Python中使用scikit学习的方法。
测试数据集是一个小型的人工数据集,它可以让你测试机器学习算法或其它测试工具。
测试数据集的数据具有定义明确的性质,如线性或非线性,这允许您探索特定的算法行为。
scikit-learn Python库提供了一组函数,用于从结构化的测试问题中生成样本,用于进行回归和分类。
在本教程中,您将发现测试问题以及如何在Python中使用scikit学习。
完成本教程后,您将知道:
如何生成多分类预测问题
如何生成二分类预测问题
如何生成线性回归预测测试问题
让我们开始吧
教程概述
本教程分为三个部分,分别是:
测试数据集
分类测试问题
回归测试的问题
测试数据集
开发和实现机器学习算法遇到的问题是,您如何知道是否正确地实现了机器学习算法。
即使存在bug有些算法还是能执行。
测试数据集是一个较小的人为设计问题,它允许您测试和调试算法和测试工具。
它们还能帮助更好地理解算法的行为,以及超参数是如何在相应算法的执行过程进行改变的。
下面是测试数据集的一些理想属性:
它们可以快速且容易地生成。
它们包含“已知”或“理解”的结果与预测相比较。
它们是随机的,每次生成时都允许对同一个问题进行随机变量的变化。
它们很小,可以很容易在两个维度中进行可视化。
它们也可以被简单地放大。
我建议在开始使用新的机器学习算法或开发新的测试工具时使用测试数据集。
scikit-learn是一个用于机器学习的Python库,它提供了生成一系列测试问题的功能。
在本教程中,我们将介绍一些为分类和回归算法生成测试问题的例子。
分类测试问题
分类是把标签分配给观测样本的问题。
在这一节中,我们将讨论三种分类问题:斑点、月亮和圆圈。
斑点分类问题
make_blob()函数可用于生成高斯分布的点。
您可以控制生成多少个斑点,以及生成的样本数量,以及其他一些属性。
如果这些斑点有线性可分的性质,那么这个问题适用于线性分类问题。
下面的例子生成一个带有三类斑点的二维数据集,作为一个多类分类预测问题。
每个观察都有两个输入和0、1或2个类值。
完整代码如下
运行这个示例会生成问题的输入和输出,然后创建一个方便的2D绘图,用不同的颜色显示不同的类。
注意,由于问题生成器的随机特性,您的特定数据集和结果图将会有所不同。
这是一个特性,而不是一个bug。
测试分类问题的散点图
我们将在下面的示例中使用这个相同的示例结构。
卫星分类问题
make_moons()函数是用于二分类问题的的,它将生成像漩涡一样,或者像月亮形状一样的数据集。
你可以控制月亮的形状和产生的样本数量。
这个测试问题适用于能够学习非线性类边界的算法。
下面的例子产生了一个带有中等噪声的月球数据集。
完整的代码如下
运行该示例将生成并绘制用于检查的数据集,再次为其指定的类着色。
卫星测试分类问题散的点图
圈分类问题
make_circles()函数会产生一个二分类问题,这个问题会出现在一个同心圆中。
再一次,就像卫星测试的问题一样,你可以控制形状中噪音的大小。
该测试问题适用于能够学习复杂非线性曲线的算法。
下面的示例生成一个带有一些噪声的圆形数据集。
完整的代码如下
运行该示例将生成并绘制用于检查的数据集。
圆试验分类问题的散点问题
回归测试的问题
回归是预测某个观测量的问题。
make_regression()函数将创建一个带有输入和输出之间线性关系的数据集。
您可以配置示例的数量、输入特性的数量、噪声级别,等等。
这个数据集适用于能够学习线性回归函数的算法。
下面的示例将生成100个示例,其中包含一个输入特性和一个输出特性,它的噪声很低。
完整的代码如下。
运行该示例将生成数据,并绘制X和y关系图,由于该关系是线性的,因此非常无趣。
回归测试问题的散点图
延伸
本节列出了一些扩展您可能希望探索的教程的想法。
比较算法
选择一个测试问题,并对问题的算法进行比较,并报告性能。
扩大的问题
选择一个测试问题,并探索扩大它的规模,使用改进的方法来可视化结果,或者探索给定的算法的模型技巧和问题深度。
额外的问题
这个库提供了一系列额外的测试问题;
为每个人编写一个代码示例来演示它们是如何工作的。
如果您探究这些扩展的任何一个,我很想知道。
进一步的阅读
如果您希望深入研究,本节将提供更多关于主题的参考资料。
学习用户指南:数据集加载实用程序(http://scikit-learn.org/stable/datasets/index.html)
scikit-learn API:sklearn - 数据集(http://scikit-learn.org/stable/modules/classes.html#module-sklearn.datasets)
总结
在本教程中,您发现了测试问题,以及如何在Python中使用scikit库。
具体来说,你学会了:
如何生成多分类预测问题
如何生成二分类预测问题
如何生成线性回归预测测试问题
原文链接:https://machinelearningmastery.com/generate-test-datasets-python-scikit-learn/
笪洁琼,中南财大MBA在读,目前研究方向:金融大数据。目前正在学习如何将py等其他软件广泛应用于金融实际操作中,例如抓包预测走势(不会预测股票/虚拟币价格)。可能是金融财务中最懂建筑设计(风水方向)的长腿女生。花式调酒机车冲沙。上赛场里跑过步开过车,商院张掖丝路挑战赛3天徒步78公里。大美山水心欲往,凛冽风雨信步行。
为前端,设计出交互体验卓越的系统一直是我们的挑战目标,工欲善其事,必先利其器,今天分享几个个人觉着好用且有特色的CSS工具,希望能提高伙伴作品的设惊艳度。
演示地址:https://codepen.io/LekovicMilos/pen/omVzYv
为图片实现随机的斑点显示效果,不过原网址的图片源有问题,感兴趣的可以把这个图片源换一下就可以了。
类似的,还有一个圆角变形器,可以控制border-radius,地址如下
演示地址:地址:https://codepen.io/cobra_winfrey/pen/jpRQbP
可以控制div的四角产生不同的变形效果。
演示地址:https://codepen.io/msurguy/pen/wvGgzN
这是一个基于js的背景生成器,可生成一个三角形背景纹理,并实现了鼠标跟随,颜色等参数可进行调节,对于偏内容的平台可以用这个工具增加一下交互感和趣味性。
地址:https://cssgrid-generator.netlify.app/
快捷方便的生成Grid布局,不过实现效果比较简单,这个工具拖拉效果设计的不太好,但也差不多够用了。
按照效果获得代码:
演示地址:https://neumorphism.io/#e0e0e0
生成简约效果的Panel,点击四个角切换方向,并有四种效果可以进行选择,总体感觉简约但不简单。
演示地址:https://www.colorzilla.com/gradient-editor/
个人一直在用的CSS背景生成器,如果需要生成复杂颜色背景,可以用这个。
演示地址:http://www.bestcssbuttongenerator.com/
按钮是平台最不起眼但又最体现特色的交互控件,有一个生动富有灵性的按钮,是前端重要的课题之一。这款按钮生成器可以尝试一下。
演示地址:https://favicon.io/
可根据PNG、TEXT、表情生成网站图标,包括手机应用的图标。
大家如果还有更好用的特色工具,欢迎沟通交流。学无止境,一起努力提高。
*请认真填写需求信息,我们会在24小时内与您取得联系。