This is rather a long comment... (This was originally written for CV and Data Science: semi-identical twins?, but then I found this question).
Comparison by tags
One way to look at datascience.SE (DS) / CV is to compare the sites by tags.
Top tags of DS on 2019-08-11:
- machine-learning: 5881 (vs machine-learning: 12819 on CV)
- python: 3219 (vs python: 2529 on CV)
- neural-network: 2511 (vs neural-networks: 4711 on CV)
- deep-learning: 2338 (vs deep-learning: 2077 on CV)
- classification: 1623 (vs classification: 4859 on CV)
- keras: 1385 (doesn't exist?)
- scikit-learn: 1084 (vs scikit-learn: 1133 on CV)
- r: 1011 (vs r: 20394 on CV)
- tensorflow: 997 (doesn't exist?)
- nlp: 954 (doesn't exist?)
Top tags of CV on 2019-08-11:
- r: 20394 (vs r: 1011 on DS)
- regression: 18727 (vs regression: 726 on DS)
- machine-learning: 12819 (vs machine-learning: 5881 on DS)
- time-series: 9621 (vs time-series: 835 on DS)
- probability: 7606 (vs probability: 159 on DS)
- hypothesis-testing: 6468 (doesn't exist?)
- distributions: 6212 (doesn't exist?)
- self-study: 6171 (doesn't exist?)
- logistic: 5170 (doesn't exist?)
- bayesian: 5048 (doesn't exist?)
One can see a couple of things here, I think:
- CV is much bigger than DS, by now. Considering the fact that CV is 6 years older than DS (source and source), I guess this is natural. It would be interesting to get some data for stack exchange sites to try to predict the growth :-)
- DS seems to attract more people from computer science, where CV seems to attract more people from mathematics.
Further analysis
It would be interesting to get a graph of the tag growth by month for both sites (in one graphic).
I would also like to see which kind of questions get closed on both sites. Which tags do they have? How often does it happen that a question gets migrated DS -> CV and how often CV -> DS?
Discriminating stats.SE from datascience.SE
For me, I can say that I like DS more. The name of the site seems to be more clear to me. Only from the name, I know that this includes machine learning / analysing data / classification / prediction. But cross validated? I know what cross validation is, so is CV only about testing? And why is it called "crossvalidated" but has stats.SE as an URL? This seems unfortunate.
When one likes to have one big site, then why not merge both in math.SE / stackoverflow / cs.SE / opendata.SE...?
I think both sites have a reason to be there. It seems to me that stats.SE should be about statistics. Yes, it has a large number of machine learning questions, but my guess is that this is simply because of the age. StackOverflow also has a lot of ... well, everything. Because it was there first. That doesn't mean the other sites are useless or that new questions shouldn't be moved. One example is the latex tag on SO. Almost all questions tagged with "latex" on SO get moved to tex.SE. Similarly, I think almost all questions tagged with "machine-learning" should get moved to datascience whereas "statistics" is a candidate I would rather see on stats.SE.
Code
import requests
def get_api_result(uri):
resp = requests.get(uri)
return resp.json()
def get_toplist(ds, other, ds_tags, cv_tag_dict):
ds2cv_tagname = {"neural-network": "neural-networks"}
print(f"Top tags of {ds}")
for i, tag in enumerate(ds_tags["items"], start=1):
new_tagname = ds2cv_tagname.get(tag['name'], tag['name'])
tag_cv = cv_tag_dict.get(new_tagname, None)
if tag_cv is None:
vs_string = "doesn't exist?"
else:
vs_string = f"vs {new_tagname}: {tag_cv} on {other}"
print(f"{i}. {tag['name']}: {tag['count']} ({vs_string})")
if i == 10:
break
base = "https://api.stackexchange.com/2.2"
fstring = "{base}/tags?page=1&pagesize=100&order=desc&sort=popular&site={site}"
ds_tags = get_api_result(fstring.format(base=base, site="datascience"))
cv_tags = get_api_result(fstring.format(base=base, site="stats"))
ds_tag_dict = {tag['name']: tag['count'] for tag in ds_tags['items']}
cv_tag_dict = {tag['name']: tag['count'] for tag in cv_tags['items']}
get_toplist(ds="DS", other="CV", ds_tags=ds_tags, cv_tag_dict=cv_tag_dict)
get_toplist(ds="CV", other="DS", ds_tags=cv_tags, cv_tag_dict=ds_tag_dict)