我使用override func viewDidLoad() {
super.viewDidLoad()
findCordiante(adress: "Cupertino, California, U.S.") { string in
// use `string` here ...
if let string = string {
self.latLong = string
print(string)
} else {
print("not found")
}
}
// ... but not here, because the above runs asynchronously and it has not yet been set
}
func findCordiante(adress:String, completionHandler: @escaping (String?) -> Void) {
let geocoder = CLGeocoder()
geocoder.geocodeAddressString(adress) { placemarks, error in
if let location = placemarks?.first?.location, location.horizontalAccuracy >= 0 {
completionHandler("\(location.coordinate.latitude), \(location.coordinate.longitude)")
} else {
completionHandler(nil)
}
}
}
生成一个应该是线性可分的测试数据集。问题是并非每个生成的数据集都是线性可分的。如何使用sklearn.datasets.make_classification
生成线性可分的数据集?我的代码如下:
sklearn.datasets.make_classification
答案 0 :(得分:1)
没有“线性可分离”选项,但您可以在数据集不可线性分离时拒绝它,并生成另一个数据集。像这样:
separable = False
while not separable:
samples = make_classification(n_samples=100, n_features=2, n_redundant=0, n_informative=1, n_clusters_per_class=1, flip_y=-1)
red = samples[0][samples[1] == 0]
blue = samples[0][samples[1] == 1]
separable = any([red[:, k].max() < blue[:, k].min() or red[:, k].min() > blue[:, k].max() for k in range(2)])
plt.plot(red[:, 0], red[:, 1], 'r.')
plt.plot(blue[:, 0], blue[:, 1], 'b.')
plt.show()
这只测试垂直或水平分离,但无论如何,这些都是您希望在设置中发生的。
此外,增加class_sep
参数会使分离更容易发生。
答案 1 :(得分:0)
我相信问题已得到解答,但还有一个有趣的选择datasets.make_blobs
。请查看代码:
import matplotlib.pyplot as plt
from sklearn import datasets
X, y = datasets.make_blobs(n_samples=100, centers=2, n_features=2, center_box=(0, 10))
plt.plot(X[:, 0][y == 0], X[:, 1][y == 0], 'g^')
plt.plot(X[:, 0][y == 1], X[:, 1][y == 1], 'bs')
plt.show()